JRebel、Spring、JSF Mojarra 2.0.3、およびWebLogic 10.3を使用したXHTMLファイルのホットリロードで問題が発生しました。
JRebelは通常のJavaクラスとjs/cssファイルを/ WebContentの下に正常に再ロードしますが、JSFの.xhtmlファイルは再ロードしません。サーバーでxhtmlファイルを更新するには、完全な再公開が必要でした。
試行錯誤の末、私はようやくいくつかのfaceletsパラメーターをweb.xmlに追加し、説明されているようにカスタムResourceResolverを作成することで、この機能を動作させました このブログ投稿で 。
しかし、なぜこれが機能するのか、より具体的には:
JRebelは/ WebContentフォルダーの変更を処理します。
問題は、Faceletsがキャッシュを行い、変更されたファイルを再読み取りしないことです。強制的に再読み込みするには、web.xml
に次のパラメータを指定します。
JSF 2(Facelets 2.x):
<!-- Time in seconds that facelets should be checked for changes since last request. A value of -1 disables refresh checking. -->
<context-param>
<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
<param-value>0</param-value>
</context-param>
<!-- Set the project stage to "Development", "UnitTest", "SystemTest", or "Production". -->
<!-- An optional parameter that makes troubleshooting errors much easier. -->
<!-- You should remove this context parameter before deploying to production! -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
JSF 1.2(Facelets 1.x)パラメータの場合:
<context-param>
<param-name>facelets.REFRESH_PERIOD</param-name>
<param-value>0</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
JSFコンテキストパラメータの詳細: http://docs.jboss.org/jbossas/6/JSF_Guide/en-US/html/jsf.reference.html#standard.config.params
このカスタムリソースリゾルバーは、あなたのケースでは必要ありません。そのリソースリゾルバーは、カスタムファイルシステムフォルダーからxhtmlファイルを取得するためのトリッキーな方法です。あなたの場合、JRebelがそれを行います(さらにそれ以上)。
これが私のためにこれを修正した方法です:
facelets
プラグインが有効になっていることを確認します&Project Stage
でweb.xml
Development
を使用していることを確認します