JSF2にアプリケーションがあります(Primefacesを使用)。を使用してリソースへの URL を解決するh:outputStylesheet
ため、css へのリンクは次のようになります。
/project/javax.faces.resource/style.css.xhtml?ln=css
サーバーのTomcatにプロジェクトをデプロイすると、すべて正常に動作します。url を broswer に入力すると、css ファイルが表示されます。
http://myserver.com:8080/project/javax.faces.resource/style.css.xhtml?ln=css
もちろん、次のようなリソースへの直接 URL を使用してアクセスすることもできます。
http://myserver.com:8080/project/resources/css/style.css
ポート 80 で受信したリクエストを tomcat に転送するように apache を設定すると、問題が発生します。私は2つのアプローチを試しました:
- mod_jk を使用した ajp
- mod_proxy を使用した ajp
どちらの構成でも、jsf リソースとしてアクセスすると、無効な css ファイルが生成されます。私が置くとき:
http://myserver.com/project/javax.faces.resource/style.css.xhtml?ln=css
次のエラー メッセージが表示されます。
This page contains the following errors:
error on line 1 at column 1: Document is empty
Below is a rendering of the page up to the first error.
ただし、CSS ファイルへの直接 URL は引き続き機能します。
http://myserver.com/project/resources/css/style.css
私の質問は: ajp 構成で見逃したものは何ですか?
ここに設定があります:
ajp ワーカー:
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
JK を使用した ajp 接続:
JkMount /project/ ajp13_worker
JkMount /project ajp13_worker
JkMount /project/* ajp13_worker
プロキシを使用した代替 ajp 接続:
ProxyPass /project/ ajp://127.0.0.1:8009/project/
ProxyPassReverse /project/ http://127.0.0.1:80/project/
tomcat server.xml
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />
私が使う:
- トムキャット7
- Java 8
- プライムフェイス 4.0