繁体   English   中英

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

[英]How can I read Apache Httpd Env variables from a Java application running in TomCat?

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

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

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

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

如果您使用的是HTTP代理( mod_proxy )而不是mod_jk ,则可以使用mod_headers将环境变量作为请求标头mod_headers ,例如:

RequestHeader set X-MYVAR %{MYVAR}e

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

此外,如果您通过AJP使用模块代理,即mod_proxy_ajp ,根据文档

名称前缀为AJP_的环境变量将作为AJP请求属性(从密钥名称中删除AJP_前缀)转发到源服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM