3

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

4

2 回答 2

8

因为 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标头。

于 2013-01-20T16:00:42.870 回答
3

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

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

于 2013-05-15T07:05:04.957 回答