2016-04-11 114 views
1

我使用TomEE加1.7.2服務器並嘗試啓動web應用程序與OmniFaces包括在內,但我得到一個空指針異常:顯示java.lang.NullPointerException在org.omnifaces.cdi.eager.EagerBeansWebListener.requestInitialized

WARNUNG: Could not instantiate eager request scoped beans for request /index.xhtml. Possibly the CDI request scope is not active. If this is indeed the case, see JavaDoc on org.omnifaces.cdi.Eager on how to remedy this.

java.lang.NullPointerException at org.omnifaces.cdi.eager.EagerBeansWebListener.requestInitialized(EagerBeansWebListener.java:78)

當我使用EagerBeansFilter如OmniFaces docs所示,我得到一個微小的變化:

WARNUNG: Could not instantiate eager application scoped beans. Possibly the CDI application scope is not active. This is known to be the case in certain Tomcat and Jetty based configurations.

java.lang.NullPointerException at org.omnifaces.cdi.eager.EagerBeansRepository.instantiateApplicationScopedAndRegisterListener(EagerBeansRepository.java:69)

這是服務器omnifaces不可組合?

+0

準確哪個OmniFaces版本?你可以在這裏找到兼容性矩陣:https://github.com/omnifaces/omnifaces/wiki/Compatibility-Matrix TomEE是最受測試的服務器之一。該webapp是爲Tomcat還是Java EE設計的? TomEE絕對不能與Tomcat相提並論。任何Tomcat(或Jetty或任何其他定製堆棧)的目標webapp在部署到標準Java EE服務器時都會以某種方式失敗。 – BalusC

+0

問題至少表明配置錯誤的CDI環境。也許webapp確實是Tomcat的目標,並且捆綁了一些CDI庫,而當部署在標準的Java EE服務器上時,這些服務器已經提供了幾種Java EE API實現,例如CDI(和JSF!)。 – BalusC

+0

好吧,問題似乎是omnifaces版本相關:我使用2.2-RC2,現在更新到2.3,並沒有例外了! – Lemao1981

回答

1

TomEE是WildFly針對OmniFaces最經過測試的服務器之一,特別是因爲它幾乎可以在Java EE中隨處使用與WildFly(Apache vs Oracle)相比的不同實現。在OmniFaces compatibility matrix中,您可以找到成功運行OmniFaces showcase中所有頁面的TomEE版本。

當CDI BeanManager找不到OmniFaces EagerBeansRepository這是一個@ApplicationScoped bean時,將會拋出您的問題中提到的那些異常。這反過來表明錯誤配置的CDI環境(例如錯誤的beans.xml或缺少JNDI /偵聽器配置)或髒構建(例如重複庫)。驗證CDI配置並執行完整的清理/重建應該可以解決問題。

至少,OmniFaces 2.2或更新版本在技術上與TomEE 1.x不兼容,因爲TomEE 1.x附帶JSF 2.1和OmniFaces 2.2或更新版本,因爲新的<o:viewAction>標籤對JSF 2.2有很大依賴性。所以,除非你修改TomEE提供JSF 2.2,OmniFaces 2.2或更新版本將不部署,並應與下面的異常失敗的部署:

java.lang.NoClassDefFoundError: javax/faces/component/UIViewAction

最新版本OmniFaces成功地部署了一個股票TomEE 1.7.x服務器上是OmniFaces 2.1。如果您想在股票TomEE上使用OmniFaces 2.2或更新版本,則需要升級到TomEE 7.x.

相關問題