Jakarta ee 如何通过在单个位置编写多个WAR文件来调用通用应用程序?

Jakarta ee 如何通过在单个位置编写多个WAR文件来调用通用应用程序?,jakarta-ee,tomcat,servlets,tomcat6,web.xml,Jakarta Ee,Tomcat,Servlets,Tomcat6,Web.xml,我在TomcatWebApps目录中部署了很多应用程序,比如A、B和C 此外,还有一个单独的公用事业项目,如Z,需要由所有A、B和C使用 一种方法是将Z项目的.class文件放在所有A、B和C项目的classes文件夹中 有没有可能保持Z项目不变,我们只需在a、B和C中为相同的Z项目提供一个参考,这样我们就不需要在所有3个项目中复制jar或.class文件 如果是,怎么做 如果我问了一个愚蠢的问题,我很抱歉……但我想澄清这个疑问 谢谢Web应用程序被隔离到不同的应用程序中。这样,一个应用程序的类

我在TomcatWebApps目录中部署了很多应用程序,比如A、B和C

此外,还有一个单独的公用事业项目,如Z,需要由所有A、B和C使用

一种方法是将Z项目的.class文件放在所有A、B和C项目的classes文件夹中

有没有可能保持Z项目不变,我们只需在a、B和C中为相同的Z项目提供一个参考,这样我们就不需要在所有3个项目中复制jar或.class文件

如果是,怎么做

如果我问了一个愚蠢的问题,我很抱歉……但我想澄清这个疑问


谢谢

Web应用程序被隔离到不同的应用程序中。这样,一个应用程序的类和库不会影响另一个应用程序。如果希望在应用程序之间共享类或库,可以将它们放在公共类加载器中

Webapp1 Webapp2

再看一看

也就是说,这不是一个必要的最佳实践,因为它使tomcat本身的部署变得复杂;这意味着
.war
并非真正的“独立”;它可能会打破web应用程序的隔离模式(参见下面的注释)

您遇到的是构建问题。您可以使用构建系统,例如,自动构建
.war
。每个项目A、B、C都可以依赖于一个公共项目D。当您构建A、B或C时,构建系统首先构建D,然后根据需要打包所有内容

注:


Web应用程序应该被隔离,这样它们就不会共享对象。它们的对象图是完全不同的,每个应用程序都可以轻松地单独重新部署(和垃圾收集)。如果你把类放在一个普通的类加载器中,它可能会带来不必要的副作用。例如,如果共享类实现了一个singleton,这意味着所有应用都将共享singleton对象的同一个实例,这与假定的隔离模型冲突。在某些特殊情况下,当人们明确希望在应用程序之间共享对象时,通常会以这种方式共享类。

感谢Ewernli,这在某种程度上消除了我的疑虑。让我看看你提到的链接。事实上,这个问题是在一些采访中问我的,我想要一些小的应用程序来测试那种作品。谢谢
  Bootstrap
      |
   System
      |
   Common
   /     \