1

私は TomEE Plus 1.7.2 サーバーを使用しており、OmniFaces を含む Web アプリケーションを開始しようとしていますが、Nullpointer 例外が発生します:

警告: リクエスト /index.xhtml の熱心なリクエスト スコープ Bean をインスタンス化できませんでした。CDI リクエスト スコープがアクティブでない可能性があります。これが実際に当てはまる場合は、org.omnifaces.cdi.Eager の JavaDoc を参照して、これを修正する方法を確認してください。

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

OmniFaces docsに示されているように EagerBeansFilter を使用すると、わずかな変化が得られます。

警告: 熱心なアプリケーション スコープ Bean をインスタンス化できませんでした。CDI アプリケーション スコープがアクティブでない可能性があります。これは、特定の Tomcat および Jetty ベースの構成に当てはまることが知られています。

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

このサーバーはomnifacesと組み合わせることはできませんか?

4

1 に答える 1

2

TomEE は、OmniFaces の最もテストされたサーバーの 1 つとして WildFly に続いています。特に、Java EE のほぼすべての場所で、WildFly とは異なる実装 (Apache と Oracle) を使用しているためです。OmniFaces 互換性マトリックスでは、 OmniFaces ショーケースのすべてのページを正常に実行した TomEE バージョンを見つけることができます。

質問で言及されている例外は、CDIが BeanであるBeanManagerOmniFaces を見つけられなかったときにスローされます。これは、CDI 環境の構成ミス (例: 間違った beans.xml または JNDI/リスナー構成の欠落) またはダーティ ビルド (例: ライブラリの重複) を示しています。CDI 構成を確認し、完全なクリーン/再構築を実行すると、問題が解決するはずです。EagerBeansRepository@ApplicationScoped

少なくとも、OmniFaces 2.2 以降は TomEE 1.x と技術的に互換性がありません。TomEE 1.x には JSF 2.1 が同梱されており、OmniFaces 2.2 以降は新しい<o:viewAction>タグのために JSF 2.2 に大きく依存しているためです。したがって、JSF 2.2 を提供するように TomEE を変更しない限り、OmniFaces 2.2 以降はデプロイされず、以下の例外でデプロイに失敗するはずです。

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

ストック TomEE 1.7.x サーバーに正常にデプロイされる最新の OmniFaces バージョンは、OmniFaces 2.1 です。ストック TomEE で OmniFaces 2.2 以降を使用する場合は、TomEE 7.x にアップグレードする必要があります。

于 2016-04-11T08:45:00.330 に答える