4

我需要创建 2 个部署在 tomcat 服务器上的战争应用程序。其中一个应用程序与另一个应用程序具有完全相同的逻辑和代码,但增加了对视图和控制器的更改。

然后 App1 和 App2 将具有相同的代码来访问数据,我不想重复代码。我的想法是创建 2 个 WAR,这些 WAR 文件应该使用可以访问数据库的库或其他项目(我不知道)。

哪种解决方案最适合性能?

4

3 回答 3

2

如果您想对两个项目使用相同的类,只需简单地创建一个.jar包含这些类的文件。然后将其添加.jar到您的 Web 项目的类路径中并在两者中使用它。

于 2013-02-04T09:34:01.643 回答
2

选项1

如果您正在共享代码(而且它是一大段代码,在上传战争文件时会让您发疯),则可以选择创建一个包含代码的 jar 并将 jar 文件添加到 tomcats library-folder,即

${CATALINA_BASE}/lib/

请注意,这通常不是您想要轻易做的事情,因为该 jar 文件将可用于 tomcat 上的所有战争文件,从而产生可能的命名空间问题。

选项 2

如果与应用程序服务器上的所有项目共享代码不是一个选项,您必须将 jar 文件添加到项目中并将其添加到它的类路径中(如果您将 jar 添加到

${PROJECT_ROOT}/WebContent/WEB-INF/lib
)。

性能方面这并没有真正的区别,因为 tomcat 将加载不是很大的类文件。实例可能是,但部署类型对实例并没有真正的影响。

于 2013-02-04T09:52:09.490 回答
1

您可以将公共部分提取出来,并将其制成罐子。然后两次战争使用这个罐子作为图书馆。

如果您使用 maven 来构建您的战争,那么构建项目层次结构会更容易。

就像是:

parent
 |_common(jar)
 |_war1
 |_war2 
于 2013-02-04T09:33:08.663 回答