一尘不染

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

tomcat

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


阅读 156

收藏
2020-06-16

共1个答案

一尘不染

因为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

…然后在Tomcat中,您必须提取X-MYVAR标头。

2020-06-16