如何从TomCat中运行的Java应用程序中读取Apache Httpd Env变量?

Dan*_*Dev 3 java apache tomcat stripes

我在Apache Httpd后面的TomCat容器中运行了几个Java应用程序.在Apache Httdp中SetEnv FOO bar,如果安装了mod_env,则可以设置Env变量.如何在TomCat中运行的Java应用程序中读取这些变量?Java应用程序主要使用Stripes构建,如果有帮助的话.

lar*_*sks 8

因为Tomcat是在Apache之外启动的,所以它无法访问Apache环境.这意味着您需要一些方法将环境变量从Apache传递到Tomcat.

如果使用连接Apache和Tomcat mod_jk,则可以使用该JkEnvVar指令将特定变量传递给Tomcat.从mod_jk文档:

该指令JkEnvVar允许您将环境变量从Apache服务器转发到Tomcat引擎.您可以将默认值作为第二个参数添加到指令中.如果没有显式给出默认值,则只有在运行时设置变量时才会发送变量.可以在Tomcat端检索变量作为请求属性request.getAttribute(attributeName).请注意,发送的变量JkEnvVar不会列在request.getAttributeNames().

如果您使用HTTP代理(mod_proxy)而不是mod_jk,您可以使用以下内容将环境变量作为请求标头传递mod_headers:

RequestHeader set X-MYVAR %{MYVAR}e
Run Code Online (Sandbox Code Playgroud)

...然后在Tomcat中你必须提取X-MYVAR标题.