我在Apache Httpd后面的TomCat容器中运行着几个Java应用程序。SetEnv FOO bar如果已安装mod_env,则可以在Apache Httdp中使用设置Env变量。如何在TomCat中运行的Java应用程序中读取这些变量?如果有帮助的话,Java应用程序大多使用Stripes构建。
SetEnv FOO bar
因为Tomcat是在Apache外部启动的,所以它无权访问Apache环境。这意味着您需要某种方式将环境变量从Apache传递到Tomcat。
如果使用来连接Apache和Tomcat mod_jk,则可以使用JkEnvVar指令将特定变量传递给Tomcat。从mod_jk文档中:
mod_jk
JkEnvVar
该指令JkEnvVar允许您将环境变量从Apache服务器转发到Tomcat引擎。您可以将默认值作为第二个参数添加到指令。如果未明确指定默认值,则仅在运行时设置变量时才发送变量。可以在Tomcat端通过检索这些变量作为请求属性request.getAttribute(attributeName)。请注意,通过发送的变量JkEnvVar不会在中列出request.getAttributeNames()。
request.getAttribute(attributeName)
request.getAttributeNames()
如果您使用的是HTTP代理(mod_proxy)而不是mod_jk,则可以使用mod_headers,将环境变量作为请求标头传递,例如:
mod_proxy
mod_headers
RequestHeader set X-MYVAR %{MYVAR}e
…然后在Tomcat中,您必须提取X-MYVAR标头。
X-MYVAR