|
|
1
10
正如评论所说,你已经正确地解释了你观察到的行为的原因。 关键是类加载器的结构。对于一个JVM中的两个类加载器,每个类都可以加载一个类,因此包含静态字段的独立副本。”静态“使类加载器成为全局的,而不是JVM。我想,Tomcat无法使用共享库来保存容器级的类加载器,并且以某种方式强制每个应用程序类加载器分别加载共享库。 但对于其他的公共类(如J2EEAPI和实现)来说,这有点浪费。原则上,类不应该依赖于这个类加载器结构。 这就是为什么您不应该将应用程序依赖项放在Tomcat的共享库文件夹中的原因。这就是“解决方案”。它将应用程序与容器的特定设置和部署联系起来,这违背了J2EEWeb应用程序的原则。只需在WEB-INF/LIB中为每个应用程序放置依赖项的副本。 你所观察到的行为是另一个不这样做的原因:应用程序之间的隔离度降低了。我不觉得这是违反直觉的行为,但我想这是因为我已经习惯了Tomcat的工作方式和思考这些事情。 |
|
|
gigashark · 部署生成的Maven Spring项目不起作用 7 年前 |
|
|
Tristan Le Gacque · ApachePOI:NoClassDefFoundError:org。阿帕奇。poi。openxml4j。例外情况。invalidFormatException无效格式异常 7 年前 |
|
|
Carlos Chávez · Tomcat/Hibernate配置 7 年前 |