2013-11-28 16 views
9

の私はweb.xml設定が含まれている現在のJSFプロジェクト見直している:(*.xhtml上で設定)は、コンフィギュレーションはcom.sun.faces.config.ConfigureListener

  • のFacesServletを
  • com.sun.faces.config.ConfigureListener

私はJSF 2.2とMojarraの実装を使用しています。

私はConfigureListenerについて混乱しています。このクラスはコンフィグレーションに必要ですか?このクラスの目標は何ですか?私は情報を見つけることができず、クラスにはほとんどjavadocがありません。

この設定を削除しても、すべて同じように動作するようです。したがって、私はConfigureListenerが削除される可能性があるか、削除する必要があると思いますが、わかりません。

+0

こちらをご覧くださいhttp://www.coderanch.com/t/428264/JSF/java/function-listener-sun-faces-config – Willmore

答えて

10

通常、ConfigureListenerは、Mojarra実装JARファイルのファイルによって自動的に登録されます。さらに、ConfigureListenerはServlet 3.0 ServletContainerInitializerで明示的に登録されているため、古いGlassFish v3バグを回避することができます(v3、3.0.xではなく、実際には最初のGF3バージョンです)。

.tldファイルによる自動登録が不十分な状況があります。よく知られているのは、webappがJettyに展開されたときです。これはこのQ & A:could not find Factory: javax.faces.context.FacesContextFactoryで詳細に説明されています。

さらに、GlassFish v3には、TLDファイルのスキャンが遅すぎるため、JSFが必要な初期化作業を適切なタイミングで実行できないというバグがあります。その後、ConfigureListenerをwebappのweb.xmlに明示的に登録する必要があります。

明示的にweb.xmlに登録されていないときに機能する場合は、そのまま使用してください。 web.xmlのノイズが少なくなります。しかし、上記の問題に敏感なコンテナに展開する可能性がある場合(つまり、Webアプリケーションが実際に公開されていて、ターゲットコンテナの選択を制御できない場合)、その場合は "それ"。


更新:このリスナーは、実際には2回の代わりに一度だけの実行されます:Tomcat 8.xのは、このエントリはweb.xmlで有効になっているとき、バグの挙動を示していることが表示されます。結果は悲惨です。とりわけ、すべてのJSFイベント・リスナーは2回登録され、コンポーネント・ライブラリーは2回ロードされます。これにより、実行時に競合が発生します。つまり、Tomcatにデプロイするときは、このエントリがweb.xmlから削除されていることを確認してください。

+0

ありがとうございます。私は 'FacesServlet'が'/*。xhtml'で実際に設定されていることに気付きました。私は質問を更新しました。 – LaurentG

+0

ようこそ。私はそれを二重チェックしたい。これは不正な構文です。 Qを正しいものに更新しました。 – BalusC

+0

あなたは正しいです(もう一度)。申し訳ありませんが、私は早すぎます。私は '* .xhtml'を持っています。 – LaurentG

関連する問題