我已经有经验,通过更新每个webapp的META-INF/context.xml以包含crossContext =“true”,在单独的webapps之间转发请求。Tomcat跨服务请求转发?
但是,我现在有一种情况,现在我在同一个运行的tomcat中部署了webapps,但是在完全独立的区域中。为了详细说明,在Tomcat中的server.xml:
- APP1使用服务名称为“app1Svc”有自己的连接器(允许在不同端口上运行),等于是自己的发动机,领域和主机。
- APP2也有类似的设置,与名为“app2Svc”有自己的连接器一distince服务等
如果我运行在同一台主机内的这些web应用,我可以通过它们的上下文派遣两个之间的请求.xml的crossContext =“true”并获取相关的servlet上下文来转发请求(根据Tomcat not able to get ServletContext of another webapp)。
但是,这是可能的两个webapps之间的派遣,基本上必须在不同的端口上运行(没有把httpd或somesuch放在tomcat前面)?
我想这会工作,除了这意味着我会有两个侦听器线程占用服务于一个请求,这不是非常优化。这也将失去已经在请求中设置的任何请求属性(我相信这不是标准转发的情况)。 – drobert 2012-03-29 21:33:47
是的,你必须手动传输一切。 – Bozho 2012-03-29 21:37:04
您可以通过RMI公开两个Servlet的服务吗?如果您在本地局域网上,这对于服务器间通信可能比完全成熟的HTTP请求更有效。如果您使用的是同一个JVM,那么您还有其他的可能性,例如JNDI,或者 - 如果您以编程方式启动服务器 - 向您公开自己的JVM范围的服务注册表。 – 2012-03-30 06:10:56