我怎么知道tomcat是否在Apache后面运行?

时间:2009-09-24 10:06:05

标签: java apache tomcat servlets

在生产中我们在apache后面运行tomcat,在开发中使用tomcat。 我怎么知道Servlet类里面是否在apache后面运行?

2 个答案:

答案 0 :(得分:2)

如果这是为了区分开发环境和生产环境,那么你可能会更好地完全控制它,而不是特别猜测(最终会破坏)。

这可能是“功能X是否在JNDI中设置?”或者“属性foo.bar是否在c:/ourproject.properties中设置”。您不应该依赖诸如“从文件加载的类X或在jar中找到的类X”(因为如果您更改应用程序服务器将会中断)或“是否存在http标题行X”这样的工件,因为这超出了您的控制范围如果其他人使用Apache作为前端加速器,可能会破坏。

所以,显式配置 - 可以很容易地完成:)

答案 1 :(得分:2)

这取决于你的Apache如何与Tomcat交谈。

如果通过HTTP(mod_proxy)连接,则可以检查request.getRemoteAddr()。它将是Apache的IP,可能是您的内部IP。您还可以检查“Via”标题以查看Apache是​​否存在。

如果它通过AJP(mod_jk / mod_proxy_ajp)连接,您可以检查request.getLocalPort()以查看它是否是JK连接器的端口。