我有几个Java应用程序在Apache Httpd后面的TomCat容器中运行。在Apache Httdp中,如果您安装了mod_env,则可以使用SetEnv FOO bar
设置Env变量。如何在TomCat内运行的Java应用程序中读取这些变量? Java应用程序主要是用Stripes构建的,如果有帮助的话。如何从TomCat中运行的Java应用程序读取Apache Httpd Env变量?
回答
由于Tomcat是在Apache之外启动的,因此它无法访问Apache环境。这意味着你需要一些将环境变量从Apache传递给Tomcat的方式。
如果您使用mod_jk
连接Apache和Tomcat,则可以使用JkEnvVar
指令将特定变量传递给Tomcat。从mod_jk documentation:
指令
JkEnvVar
允许您将环境变量从Apache服务器转发到Tomcat引擎。您可以将一个默认值作为第二个参数添加到指令中。如果未明确给出缺省值,则只会在运行时设置该变量的情况下才会发送该变量。 变量可以通过request.getAttribute(attributeName)
作为请求属性在Tomcat端进行检索。请注意,通过JkEnvVar
发送的变量将不会在request.getAttributeNames()
中列出。
如果您正在使用,而不是mod_jk
HTTP代理(mod_proxy
),您可以使用mod_headers
通过环境变量请求头,是这样的:
RequestHeader set X-MYVAR %{MYVAR}e
...然后在Tomcat中你会必须提取X-MYVAR
标题。
此外,如果您使用的模块代理通过AJP,即mod_proxy_ajp
,根据docs:
环境变量,其名称具有前缀AJP_被转发 为AJP请求属性的源服务器(与从密钥名称中删除AJP_前缀 )。
谢谢 - 这在Apache中设置完美,并且完全不需要对我的应用程序服务器代码进行任何更改!伟大的提示!例如:'提供'ORIG_URL'给Tomcat''RewriteRule(。*) - [E = AJP_ORIG_URL:$ 1]。 –
- 1. Rails应用程序不会读取.bashrc中的env变量
- 2. 从apache httpd运行pexpect
- 3. 在Apache HTTPD上运行的Rails应用程序
- 4. 从J2EE和Java应用程序中读取公共变量
- 5. apache tomcat上的Java web应用程序
- 6. 如何在java脚本中读取VCAP_SERVICES env变量
- 7. 如何获取在apache服务器进程中设置的env变量
- 8. 如何从Lua运行进程读取变量值(获取过程变量值)?
- 9. 如何删除URL中的应用程序名称? tomcat + httpd
- 10. apache httpd和tomcat:调用tomcat的功能?
- 11. 在Tomcat下运行的应用程序的环境变量
- 12. 无法读取logback中的env变量
- 13. 在Linux中运行java应用程序时出现问题env
- 14. 如何从Google Chrome应用程序运行Java应用程序?
- 15. 如何将环境变量添加到在Tomcat上运行的应用程序?
- 16. 如何在Tomcat上运行Java应用程序?
- 17. AWS CLI:如何列出特定应用程序的env变量
- 18. Apache httpd和Tomcat如何协同工作?
- 19. 如果PATH env变量初始化,Perl IPC :: Cmd不运行应用程序
- 20. 如何强制直接从HDFS读取Apache Mahout应用程序
- 21. 如何使用在Apache Tomcat上运行的war应用程序的版本号
- 22. Tomcat - 运行Web应用程序
- 23. 如何从运行应用程序在Tomcat上部署Web应用程序
- 24. Apache Tomcat 7.0.57 Manager应用程序未运行
- 25. Tomcat是否需要Apache httpd?
- 26. 在Tomcat中运行后台Java程序
- 27. 如何从Tomcat Web应用程序运行PhantomJS
- 28. 在Tomcat应用程序中使用Apache的应用程序
- 29. 使Java运行的计划任务在XP - 问题阅读ENV用户变量
- 30. 在apache tomcat上运行angulajs 2应用程序
谢谢!这非常有帮助。 – DandyDev
我想补充一点,我本周有机会试用这个建议的解决方案,它完美地工作,并解决了我正试图解决的问题!再次感谢。 – DandyDev