2010-04-09 67 views
2

我有3個安裝了JSF的war文件,3個配置文件,當我把它們全部加載到一個類加載器中時,它就是EAR的一部分,它在初始化錯誤時失敗。如下所示。好像JSF不喜歡在一個類加載器中加載多次,有沒有人試過這個?加載3個JSF戰爭的EAR?你可以在一個類加載器中加載多個jsf戰爭嗎?

java.lang.NullPointerException 
    at com.sun.faces.config.processor.ManagedBeanConfigProcessor.process(ManagedBeanConfigProcessor.java:241) 
    at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:108) 

回答

2

此特定的異常可通過丟失jsf-api.jar文件中的類路徑,或者不同的版本化jsf-api.jar在類路徑,而不是WAR的jsf-impl.jar引起的,可能在應用程序服務器提供的一個。在理論上有3種方法來解決這個問題:

  1. 擺脫所有JSF JAR的(jsf-api.jarjsf-impl.jar)在戰爭年代和依賴於應用程序服務器提供的JSF庫。
  2. 擺脫WAR中的所有JSF JAR並僅在EAR中提供它們。
  3. 將WAR中的所有JSF JAR對齊成make/version/build。

另一個原因可能是WAR包含特定應用程序服務器的庫,而這些庫又包含JSF類,例如Glassfish的javaee.jar。所有這些特定於應用程序服務器的庫都需要從所有WAR和EAR中移除。

重點:保持classpath乾淨。

相關問題