gpt4 book ai didi

java - 一个 Web 应用程序中特定的多个 SAXParserFactory 实现

转载 作者:行者123 更新时间:2023-12-01 15:12:30 25 4
gpt4 key购买 nike

我在 tomcat 上有一个 Web 应用程序。该应用程序需要两个 SAXParserFactory 实现:一个是 JDK 默认实现 com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl ,另一张来自xerces:org.apache.xerces.jaxp.SAXParserFactoryImpl .

问题来了,SAXParserFactory.newInstance()只需按特定顺序仅选择一个实现,如下所示:

  • 使用 javax.xml.parsers.SAXParserFactory 系统属性。
  • 使用JAVA_HOME(安装jdk的父目录)/lib/jaxp.properties作为属性文件,该文件包含与上面定义的系统属性相同的值的实现类的名称。
  • 使用服务 API(如 JAR 规范中详述)(如果可用)来确定类名。服务 API 将在运行时可用的 jar 中的 META-INF/services/javax.xml.parsers.SAXParserFactory 文件中查找类名。
  • 平台默认 SAXParserFactory 实例。

我尝试在不同的 jar 文件中的 javax.xml.parsers.SAXParserFactory 中配置不同的类名。但它是整个类加载器的范围。在 tomcat 中,所有应用程序库都加载在一个类加载器中。例如,A.jar中的配置文件将覆盖B.jar中的配置,最终所有应用程序都从A.jar中获取配置。

所以我的问题是如何在一个 Web 应用程序中指定这两个 SAXParserFactory 实现?谢谢。

最佳答案

很确定你不能(除非你使用多个类加载器)。依赖于其他实现的代码应该直接实例化它(使用实现类名称)。

关于java - 一个 Web 应用程序中特定的多个 SAXParserFactory 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144993/

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