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

时间:2017-11-14 13:56:21

标签: java tomcat war

让我说我有:

  • int main() { pthread_t master; pthread_t slave1; pthread_attr_t attr; int rc = 0; int retval, number; unsigned long pid; pid = PAPI_thread_id(); char errstring[PAPI_MAX_STR_LEN]; pthread_attr_init(&attr); pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); if((retval = PAPI_library_init(PAPI_VER_CURRENT)) != PAPI_VER_CURRENT ) ERROR_RETURN(retval); if ((retval = PAPI_thread_init(&pthread_self)) != PAPI_OK) ERROR_RETURN(retval); rc = pthread_create(&slave1, &attr, Slave, NULL); pthread_join(slave1, NULL); exit(0); }
  • foo.war

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

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

先生们!

2 个答案:

答案 0 :(得分:2)

是&号

我认为不可能以某种方式将它们合并到像Tomcat这样的servlet容器中的相同文件系统路径中(除非你要编写某种复杂的智能脚本)。对于初学者来说,每个.war都有一个WEB-INF/web.xml文件,每个文件都依赖于自己文件的内容来运行 - 这会赢吗?

但你可以想象......

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

答案 1 :(得分:2)

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

  

由于应用程序的上下文路径确定Web应用程序内容的URL命名空间,因此Web容器必须拒绝定义可能导致此URL命名空间中的潜在冲突的上下文路径的Web应用程序。例如,这可能通过尝试使用相同的上下文路径部署第二个Web应用程序来实现。