我在tomcat上有一个Web应用程序。该应用程序需要两个SAXParserFactory实现:一个是JDK默认实现com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
,另一个是来自xerces:org.apache.xerces.jaxp.SAXParserFactoryImpl
。
问题在于,SAXParserFactory.newInstance()
只按特定顺序选择仅一个实施,如下所示:
我尝试在不同的jar文件中配置 javax.xml.parsers.SAXParserFactory 中的不同类名。但它是整个类加载器的范围。在tomcat中,所有应用程序库都加载到一个类加载器中。例如,A.jar中的配置文件将覆盖B.jar中的配置,最终所有应用程序都从A.jar获取配置。
所以我的问题是如何在一个Web应用程序中特定这两个SAXParserFactory实现?谢谢。
答案 0 :(得分:1)
非常确定你不能(除非你使用多个类加载器)。依赖于其他实现的代码应该直接实例化它(使用实现类名)。