gpt4 book ai didi

java - Tomcat 类加载器 : priority between WebappX & Common

转载 作者:行者123 更新时间:2023-11-28 22:16:20 25 4
gpt4 key购买 nike

我有 3 个应用程序部署在 Tomcat(版本 9.02)上

  • WS
  • 应用
  • 管理员

应用程序使用我添加的通用 jar,它位于 $CATALINA_BASE/lib

当我调用 WS 时,它有一个库,它也在 common jar 中,但有另一个版本,这会引发异常。如果我在 WS => 上删除这个库,它就可以了!这是否意味着普通 jar 也使用 * WS * 库?通常 WS 资源对其他应用程序甚至其他服务器不可见。

我的问题是:我该怎么做才能使 $CATALINA_BASE/lib 上的库不会使用 WS

我读了这个: Class Loader HOW-TO但这并没有多大帮助

谢谢

最佳答案

来自 Class Loader HOW-TO 的文档:

Therefore, from the perspective of a web application, class or resource loading looks in the following repositories, in this order:

Bootstrap classes of your JVM
/WEB-INF/classes of your web application
/WEB-INF/lib/*.jar of your web application
System class loader classes (described above)
Common class loader classes (described above)

If the web application class loader is configured with <Loader delegate="true"/> then the order becomes:

Bootstrap classes of your JVM
System class loader classes (described above)
Common class loader classes (described above)
/WEB-INF/classes of your web application
/WEB-INF/lib/*.jar of your web application

我认为很明显,如果您希望您的 webapp 库比通用库具有更高的优先级,您应该怎么做。

至于

My question is : What do I do such that WS libs will not be used by lib on $CATALINA_BASE/lib

它是您的网络应用程序 (WS) 中的代码,它加载 $CATALINA_BASE/lib 或 WS 中的库。如果你有一个存在于 $CATALINA_BASE/lib 而不是 WS/lib 中的类,则将使用 $CATALINA_BASE/lib 中的类,如果该类引用 WS 中的其他类,则将加载 WS 中的类(假设你没有 <Loader delegate="true"/>

关于java - Tomcat 类加载器 : priority between WebappX & Common,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48621987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com