我需要创建 2 个部署在 tomcat 服务器上的战争应用程序。其中一个应用程序与另一个应用程序具有完全相同的逻辑和代码,但增加了对视图和控制器的更改。
然后 App1 和 App2 将具有相同的代码来访问数据,我不想重复代码。我的想法是创建 2 个 WAR,这些 WAR 文件应该使用可以访问数据库的库或其他项目(我不知道)。
哪种解决方案最适合性能?
我需要创建 2 个部署在 tomcat 服务器上的战争应用程序。其中一个应用程序与另一个应用程序具有完全相同的逻辑和代码,但增加了对视图和控制器的更改。
然后 App1 和 App2 将具有相同的代码来访问数据,我不想重复代码。我的想法是创建 2 个 WAR,这些 WAR 文件应该使用可以访问数据库的库或其他项目(我不知道)。
哪种解决方案最适合性能?
如果您想对两个项目使用相同的类,只需简单地创建一个.jar
包含这些类的文件。然后将其添加.jar
到您的 Web 项目的类路径中并在两者中使用它。
选项1
如果您正在共享代码(而且它是一大段代码,在上传战争文件时会让您发疯),则可以选择创建一个包含代码的 jar 并将 jar 文件添加到 tomcats library-folder,即
${CATALINA_BASE}/lib/
请注意,这通常不是您想要轻易做的事情,因为该 jar 文件将可用于 tomcat 上的所有战争文件,从而产生可能的命名空间问题。
选项 2
如果与应用程序服务器上的所有项目共享代码不是一个选项,您必须将 jar 文件添加到项目中并将其添加到它的类路径中(如果您将 jar 添加到
${PROJECT_ROOT}/WebContent/WEB-INF/lib)。
性能方面这并没有真正的区别,因为 tomcat 将加载不是很大的类文件。实例可能是,但部署类型对实例并没有真正的影响。
您可以将公共部分提取出来,并将其制成罐子。然后两次战争使用这个罐子作为图书馆。
如果您使用 maven 来构建您的战争,那么构建项目层次结构会更容易。
就像是:
parent
|_common(jar)
|_war1
|_war2