是否可以在同一部署路径下部署多个战争文件



假设我有:

  • foo.war
  • bar.war

我是否有可能以某种方式将它们都部署到同一部署路径? 例如,在以下位置访问它:

  • http://localhost/baz

战争文件的内容是否以某种方式合并?如何处理文件冲突(例如,假设它们都有一个index.jsp文件(?

谢谢你!

servlet 规范明确禁止这样做。 已部署的 Web 应用程序可能没有相同或重叠的上下文根。 来自 Servlet 3.0 规范的第 10.5 节:

由于应用程序的上下文路径决定了 Web 应用程序内容的 URL 命名空间,因此 Web 容器必须拒绝定义可能导致此 URL 命名空间中潜在冲突的上下文路径的 Web 应用程序。例如,尝试部署具有相同上下文路径的第二个 Web 应用程序可能会发生这种情况。

Yes & No.

我认为不可能以某种方式将它们合并到像 Tomcat 这样的 servlet 容器中的相同文件系统路径中(除非您要编写某种复杂、智能的脚本来执行此操作(。 首先,每个.war都会有一个WEB-INF/web.xml文件,每个文件都将依靠自己文件的内容来运行 - 哪个会赢?

但你可以想象...

  • 部署到 2 个不同的上下文(或容器或主机(,并使用某种负载均衡器(硬件或软件(将一些请求路由到一个,将其他请求路由到另一个。
  • 使用"覆盖"策略(例如Maven Overlays(制作第二个(也是最后一个(.war,它是另一个.war文件的衍生和扩展

最新更新