3

Apache Httpd の背後にある TomCat コンテナーで実行されている Java アプリケーションがいくつかあります。Apache HttdpSetEnv FOO barでは、mod_env がインストールされている場合、Env 変数を で設定できます。TomCat 内で実行されている Java アプリケーションでこれらの変数を読み取るにはどうすればよいですか? Java アプリケーションは、ほとんどが Stripes で構築されています。

4

2 に答える 2

8

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ヘッダーを抽出する必要があります。

于 2013-01-20T16:00:42.870 に答える
3

また、AJPを介してモジュールプロキシを使用している場合、つまりmod_proxy_ajpドキュメントに従って:

名前にプレフィックス AJP_ が付いている環境変数は、AJP 要求属性としてオリジン サーバーに転送されます (キーの名前から AJP_ プレフィックスが削除されます)。

于 2013-05-15T07:05:04.957 に答える