我正在运行 tomcat 6.0,但在配置它以执行我想要的操作时遇到了问题......
我有两个 Web 应用,分别称为 X 和 Y,部署为 X.war 和 Y.war。每个应用都有一个名为 blah 的 servlet。
所以我可以像这样访问它们: http://服务器/X/blah http://服务器/Y/blah
我想要做的是假装它们是一个 Web 应用程序 Z,并且能够执行以下操作:
http://服务器/Z/X/blah --> 就像我去过http://服务器/X/blah
http://服务器/Z/Y/blah --> 就像我去过http://服务器/Y/blah
因此我将 (catalina_home)/conf/Catalina/localhost/X.xml 更改为如下形式: < context override="true" path="/Z/X" reloadable="false" >
然而,这并没有奏效;当去http://服务器/Z/X/blah我收到“请求的资源 (/Z/X/blah) 不可用。”
我哪里做错了?
答案1
另一种方法是通过 ajp 在 apache 后面设置 tomcat。然后,使用 mod_proxy_ajp 映射http://服务器/Z/改为 ajp://server/。
答案2
如果您添加Context
内部内容server.xml
,它就会按您希望的方式工作。
<Context docBase="x" path="/z/x" reloadable="true" />
Tomcat 文档不推荐这种方法,因为任何更改都server.xml
意味着重新启动服务器,从而扰乱所有 Web 应用程序。
但是,另一方面,Catalina_Home/conf/Catalina/localhost/context.xml
正如其他人所报告的那样,按照自己的意愿保留这种做法存在一些不可靠性。
看https://stackoverflow.com/questions/4032773/why-does-tomcat-replace-context-xml-on-redeploy和