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_ プレフィックスが削除されます)。