Apache Httpd の背後にある TomCat コンテナーで実行されている Java アプリケーションがいくつかあります。Apache HttdpSetEnv FOO barでは、mod_env がインストールされている場合、Env 変数を で設定できます。TomCat 内で実行されている Java アプリケーションでこれらの変数を読み取るにはどうすればよいですか? Java アプリケーションは、ほとんどが Stripes で構築されています。
2 に答える
Tomcat は Apache の外部で開始されるため、Apache 環境にはアクセスできません。これは、Apache から Tomcat に環境変数を渡す何らかの方法が必要であることを意味します。
を使用して Apache と Tomcat を接続している場合、ディレクティブをmod_jk使用して特定の変数を Tomcat に渡すことができます。mod_jkJkEnvVarのドキュメントから:
このディレクティブ
JkEnvVarを使用すると、環境変数を Apache サーバーから Tomcat エンジンに転送できます。2 番目のパラメーターとしてデフォルト値をディレクティブに追加できます。デフォルト値が明示的に指定されていない場合、変数は実行時に設定されている場合にのみ送信されます。変数は、Tomcat 側で を介してリクエスト属性として取得できますrequest.getAttribute(attributeName)。経由で送信される変数JkEnvVarは にリストされないことに注意してくださいrequest.getAttributeNames()。
mod_proxyの代わりにHTTP プロキシ ( ) を使用している場合は、次のようにmod_jkを使用して環境変数をリクエスト ヘッダーとして渡すことができます。mod_headers
RequestHeader set X-MYVAR %{MYVAR}e
...そしてTomcatでは、X-MYVARヘッダーを抽出する必要があります。
また、AJPを介してモジュールプロキシを使用している場合、つまりmod_proxy_ajp、ドキュメントに従って:
名前にプレフィックス AJP_ が付いている環境変数は、AJP 要求属性としてオリジン サーバーに転送されます (キーの名前から AJP_ プレフィックスが削除されます)。