2013-06-03 17 views
0

我被要求幫助解決應用程序問題。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) 

還有什麼可以檢查以確定錯誤的原因?

+2

該方法在JSF 2.0中添加並且不存在於JSF 1.2中。這表明JSF 1.2實際上被用來代替JSF 2.0。 – BalusC

+0

謝謝。這是一個部分設置問題。 EAR類加載器設置爲PARENT_LAST,但WAR類加載器不是。一旦我們在兩個地方都做了PARENT_LAST,它就起作用了。所以現在我的新問題是 - EAR級別設置和WAR級別設置有什麼區別?或者我應該爲此提出一個新問題? – adbdkb

回答

1

這是一個部分設置問題。 EAR類加載器設置爲PARENT_LAST,但WAR類加載器不是。一旦我們在兩個地方都做了PARENT_LAST,它就起作用了。

將此作爲答案,以便其他具有相同問題的人可以找到解決問題的答案,而不必閱讀評論。

如果這是一個不好的禮節,這可以刪除。

相關問題