15

我正在使用 tomcat 部署我的应用程序,我想部署为一个单一的战争,以服务多个上下文路径。

目前我有 app1.war 和 app2.war,但两者都有相同的内容,只是名称不同,通过 http:///app1 和 http:///app1.war 访问。但我想这样做,部署 app.war 并通过 app1 和 app2 上下文路径访问它。可以在tomcat中做吗?请帮我解决这个问题

4

1 回答 1

24

这可以通过多种方式完成。我认为这种方式是最直接的:

  1. 将 WAR 文件移到webapps/自动部署目录之外
  2. META-INF/context.xml从您的 WAR 文件中提取。如果您的 WAR 没有META-INF/context.xml文件,则只需使用其中只有一个文件的<Context />文件
  3. 将此文件复制到 Tomcat 的conf/[service]/[host]/目录中,同时作为app1.xmlapp2.xml. ([service] 通常是“Catalina”,而 [host] 是虚拟主机的名称:在默认的 Tomcat 配置中,主机名始终是“localhost”)。
  4. 编辑app1.xmlandapp2.xml并将元素的docBase属性设置<Context>为指向您在步骤 #1 中移动的 WAR 文件
  5. 重新启动Tomcat

这应该为您提供一个物理 WAR 文件和从中部署的多个上下文。

尽管 Tomcat 支持这种配置,但我建议不要这样做:磁盘空间很便宜,它在运行时不会发生任何变化(您仍然会在内存中获得所有内容的两个副本),并且您失去了将不同 WAR 文件部署到不同上下文和/或更新的灵活性它们分开而不修改两个上下文的配置。

如果您需要我的建议,请坚持使用重复的 WAR 文件。

于 2012-07-31T01:34:41.603 回答