从多个Web应用程序创建单个Web应用程序(WAR)

时间:2016-06-18 07:30:48

标签: java spring maven ant

我们已经有一个spring web应用程序(maven项目)说webApp1在生产和托管上工作正常但现在由于一些业务需求我们想要开发另一个Web应用程序说webApp2。

因此,有些客户需要这两个应用程序,或者其中一个应用程序。我们需要自由部署哪个模块,有些客户端可能不需要webApp1,因此部署包必须只包含webApp2或有时两者都包含。

方法1:

让我们创建另一个maven项目并单独开发,在创建部署包时,可以使用Apache Ant来创建WAR文件,通过组合libs,views,两个应用程序的控制器或一个。结合web.xml,root-context.xml,servlet-context.xml可能是手动任务。

方法2:

在搜索方法1后,我了解了EAR(类似问题https://stackoverflow.com/a/2936464/1629242)。

EAR包(类似问题https://stackoverflow.com/a/2936464/1629242)可以是方法,但对于,我是否需要将现有应用程序转换为EAR?或现有工作网络应用程序webApp1需要进行哪些更改?还可以控制在EAR

中添加哪个模块

1 个答案:

答案 0 :(得分:1)

至于方法2 。这真的取决于你如何托管你的应用程序,什么是容器。如果Tomcat / Jetty可能是一个非常普遍的选择,那么EAR甚至不是一个选择,因为他们不会理解" (无法处理)EAR文件。

关于方法1 。 '手册'结合各种xmls的一部分可能很乏味,而且肯定容易出错。此外,如果你结合了xmls,你将无法在webapp1和webapp2之间获得真正的分离(在类加载器级别)。毕竟完全不同的应用程序将托管在同一个WAR中。

所以,恕我直言,你应该选择接近3

将webapp1和webapp2保持为不同的部署单元(不同的WAR)。保留不同的web.xml,spring配置文件等。

将这些战争部署为同一容器中的2个不同文件。容器将很乐意为2种不同的战争服务。这样,spring bean,servlet,filter等在运行时不会在两个应用程序之间产生干扰。此外,这种方法可以完全自动化。