我被要求幫助解決應用程序問題。EAR應用程序名稱和上下文根目錄是否相同?
這是背景 - 我們有一個運行在WAS 7中的JSF 1.2應用程序。這是一個WAR。該團隊已將另一個WAR添加到同一個應用程序中,該應用程序是JSF 2.0模塊並使用PrimeFaces組件庫。因此它是JSF 1.2和JSF 2.0的組合。由於在WAS 7中沒有對JSF 2.0的本地支持,因此我們已將mojarra jar添加到第二次war的WEB-INF/lib中,並將應用程序classloader設置爲PARENT_LAST。
我觀察到的另一件事是,這個團隊已經定義了他們的應用程序,使得application.xml中的EAR顯示名和JSF 2.0 WAR的context-root值完全相同。我知道不應該這樣做,爲了清楚起見,但找不到任何澄清它的事情。
當試圖從JSF 2.0 WAR中獲取頁面時,應用程序出現錯誤。我將只添加幾行堆棧跟蹤
Exception created : java.lang.NoSuchMethodError: javax/faces/context/FacesContext.getAttributes()Ljava/util/Map;
at org.primefaces.lifecycle.RestoreViewPhaseListener.afterPhase(RestoreViewPhaseListener.java:30)
at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:114)
還有什麼可以檢查以確定錯誤的原因?
該方法在JSF 2.0中添加並且不存在於JSF 1.2中。這表明JSF 1.2實際上被用來代替JSF 2.0。 – BalusC
謝謝。這是一個部分設置問題。 EAR類加載器設置爲PARENT_LAST,但WAR類加載器不是。一旦我們在兩個地方都做了PARENT_LAST,它就起作用了。所以現在我的新問題是 - EAR級別設置和WAR級別設置有什麼區別?或者我應該爲此提出一個新問題? – adbdkb