0

Tomcat 目前正在托管我的生产ROOT.war应用程序。

我需要测试一个新的ROOT.war,,但我不想阻止我的生产应用程序运行。请注意,该应用程序需要部署在该ROOT文件夹中。

最简单的方法是什么?

4

1 回答 1

2

Tomcat 可以像 Apache HTTPD 一样进行基于名称的虚拟主机。你需要

  • 将第二个<Host>元素添加到您的server.xml, 内部相同Engine但具有不同值的 thenameappBase
<Host name="app2.example.com" appBase="app2-webapps"
   unpackWARs="true" autoDeploy="true"
   xmlValidation="false" xmlNamespaceAware="false"/>
  • 将您的第二个 ROOT.war 放入app2-webapps
  • 如果您的 Tomcat 位于反向代理后面,请确保Host标头未触及(对于带有 mod_proxy 的 Apache HTTPD,这意味着设置ProxyPreserveHost On

现在请求http://app2.example.com/*将由您的新应用程序处理,而对任何其他主机名的请求将转到旧应用程序。

我使用这种技术在一个 Tomcat 中托管多个不同的生产应用程序,但我不建议将同一个 Tomcat 用于生产和开发/测试应用程序的混合。相反,使用不同的服务器或在不同端口上运行的第二个 Tomcat 实例会更安全。

于 2013-03-17T19:18:46.977 回答