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

标签 java jakarta-ee xml-parsing sax saxparser

我在 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/

相关文章:

R 中带有嵌套兄弟数据框的 xml

java - 流式作业与循环批处理作业使用 Kafka 队列中的数据

java - 如何在 JSF 中为标准 validator 设置自定义消息?

java - 转换表单 2012,12,06,18,00,00 上的字符串以创建新的公历

java - Java 应用程序中每个类的成本 - 更少的大类或几个更小的类

java - 返回本地或远程的决定

java - 将 child 的值(value)作为字符串

java - 在 java 应用程序和 android 应用程序中使用相同的 java 类时的两种不同格式

java - 如何模拟UUID?

java - 将文件从 Android 上传到 Tomcat