如何在Tomcat中将多个上下文映射到同一个war文件?

时间:2012-07-30 12:50:42

标签: tomcat mapping contextpath

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

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

1 个答案:

答案 0 :(得分:20)

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

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

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

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