gpt4 book ai didi

tomcat - 对 Tomcat 中的 ClassLoader 问题感到困惑

转载 作者:行者123 更新时间:2023-11-28 23:37:42 25 4
gpt4 key购买 nike

我对 Tomcat 7 类加载器及其文档有些困惑。

这是我的设置:

  1. 为 Tomcat 使用 JRE7
  2. 有一个 common.loader 设置,它指向几个应该加载的 lib 目录
  3. 有几个网络应用程序,一个做 XML 解析

进行 XML 解析的 webapp 在没有 common.loader 库的“干净”Tomcat 上运行良好。 common.loader 库之一是 xercesimpl2.jar。如果此 JAR 存在,web 应用程序将不再正常工作(它在 Xerces 中找到 GregorianCalendan 的实现,并且比 JRE java.xml.datatype 类更喜欢它)- web 应用程序仅在首先找到 JRE 类时工作。

现在根据 Tomcat 文档,类查找优先级将是“ Bootstrap 优先,然后是 webapp/classes、webapp/lib,然后是 common.loader)如果 webapp 应该首先使用 JRE 类(我猜它是由引导加载程序加载的),那么为什么 webapp 不工作?

如果我将 xercesimpl.jar 移动到 webapp 的 lib 文件夹,XML 解析 webapp 也可以工作,但是我会要求 xercesimpl.jar 由通用加载器加载。

如有任何帮助,我们将不胜感激。

最佳答案

首先,如果可能的话,我会建议您避免将一堆库扔到通用加载器中。它有可能导致很多问题(库版本问题、类转换问题等)并且通常不会给您带来太多好处(可能会节省少量内存)。

通常,您唯一会放入共享类加载器(如公共(public)加载器)的是 JDBC 或 MQ 等驱动程序。相反,这些通常在通用加载程序中效果最好。

其次,有一类特殊的库需要使用 JVM 的认可标准覆盖机制来加载。您所指的是那些图书馆之一。 Tomcat 在此处提供了一些相关信息。

http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html#XML_Parsers_and_Java

使用认可的加载机制应该有助于解决 XML 解析器问题。

关于tomcat - 对 Tomcat 中的 ClassLoader 问题感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23134691/

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