在生產中,我們在apache後面運行tomcat,在開發中裸露的tomcat。 如何知道Servlet類內部是否在Apache後面運行?如何知道tomcat是否在Apache後面運行?
0
A
回答
2
這取決於你的Apache是如何談論到Tomcat。
如果它通過HTTP(mod_proxy的)連接,您可以檢查request.getRemoteAddr()。它將是Apache的IP,可能是您的內部IP。您也可以選擇「Via」標題來查看Apache是否在那裏。
如果通過AJP(mod_jk/mod_proxy_ajp)連接,則可以檢查request.getLocalPort()以查看它是否是JK連接器的端口。
2
如果這是開發和生產環境之間的區別,那麼你可能會被具有這完全在你的控制,而不是臨時猜測(這最終將會被突破)更好。
這可能是「是否在JNDI中設置了功能X?」或者「將屬性foo.bar設置在c:/ourproject.properties中」。你不應該依賴像「從文件中加載的類X或在jar中找到的類」(因爲如果你改變應用程序服務器會中斷)或者「是否存在http標題行X」這樣的工件,因爲它不在你的控制範圍之內,如果其他人使用Apache作爲前端加速器,可能會中斷。
因此,明確的配置 - 它可以很容易地完成:)
相關問題
- 1. 如何知道正在運行的後臺進程是否爲
- 2. C/C++過程如何知道它是否在後臺運行?
- 3. 知道AsyncTask是否正在運行
- 4. 我想知道如何部署在Apache Tomcat上war文件,並使其運行
- 5. 如何看tomcat是否正在運行
- 6. 如何知道我的Windows機器上是否運行tomcat(及其端口號)?
- 7. 如何知道我的電腦是否在NAT後面?
- 8. SQLite3 - 如何知道當前行是否是最後一行
- 9. 如何知道記錄是否最後
- 10. 如何知道某個進程是否正在運行?
- 11. 如何知道服務器是否在運行Node.js?
- 12. 我如何知道我是否在網絡環境中運行?
- 13. Rails,如何知道特定請求是否仍在運行
- 14. 如何知道批處理作業是否正在運行
- 15. 如何知道我的網頁是否在Facebook iframe中運行
- 16. Python線程 - 如何知道線程是否已在運行?
- 17. 如何知道hbase服務器是否正在運行
- 18. 如何知道WildFly是否正在運行Web Profile或Full Profile?
- 19. shell函數如何知道它是否在virtualenv中運行?
- 20. SyncAdapter運行動畫 - 如何知道SyncAdapter是否正在同步
- 21. 如何知道正在運行的腳本是否死亡?
- 22. 如何知道我是否在羣集模式下運行Puma?
- 23. iOS9如何知道我是否在運行時泄漏內存?
- 24. java如何知道你是否正在運行javaw.exe與java.exe
- 25. 如何知道AnimationTimer是否正在運行?
- 26. 如何知道Spork是否正在運行
- 27. 如何知道MFC消息循環是否已在運行?
- 28. 如何知道Azure功能是否在插槽中運行
- 29. 如何知道TaskTracker是否正在運行Java代碼?
- 30. 如何知道bash腳本是否正在運行nohup?
如果添加的,而不是回答這個問題_why_要做到這一點,我們也許可以幫助您解決問題,... – Tim 2009-09-24 12:08:24
你可以有阿帕奇添加自定義HTTP標頭。我相信這很容易。現在,假設您可以控制您的生產環境 - 正如下面的一位評論者指出的,如果您不這樣做,標頭可能會丟失。 – MJB 2011-04-25 17:14:58