在生产中我们在apache后面运行tomcat,在开发中使用tomcat。 我怎么知道Servlet类里面是否在apache后面运行?
答案 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连接器的端口。