我有幾個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