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