作为我们应用程序的一部分,我们使用 apache 的 xerces jaxp 解析器。当我们在 weblogic 9.2 上部署应用程序时,我们收到以下错误。
org.springframework.beans.factory.BeanCreationException:在类路径资源 [META-INF/cxf/cxf.xml] 中定义名称为“org.apache.cxf.wsdl.WSDLManager”的 bean 创建错误:bean 的实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 bean 类 [org.apache.cxf.wsdl11.WSDLManagerImpl]:构造函数抛出异常;嵌套异常是 java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
根据我们的分析,weblogic 正在尝试加载它自己的DocumentBuilderFactoryImpl
,它存在于weblogic.jar中,而不是 apache 的 xerces。
我们尝试了以下方法来强制 weblogicDocumentBuilderFactoryImpl
从 xerces加载
i) 我们已将以下标签添加到weblogic.xml
<prefer-web-inf-classes>true</prefer-web-inf-classes>
ii) 我们已将最新版本的 xalan 放在 jre/lib/endorced 文件夹中。这并没有解决我们的问题。
ii) 我们在 weblogic-application.xml 中添加了条目
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
<application-param>
<param-name>webapp.encoding.default</param-name>
<param-value>UTF-8</param-value>
</application-param>
<prefer-application-packages>
<package-name>javax.jws.*</package-name>
<package-name>org.apache.xerces.*</package-name>
<package-name>org.apache.xerces.jaxp.*</package-name>
</prefer-application-packages>
</weblogic-application>
ii) 在 weblogic-application.xml 中添加了以下条目
<xml>
<parser-factory>
<saxparser-factory>org.apache.xerces.jaxp.SAXParserFactoryImpl</saxparser-factory>
<document-builder-factory>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</document-builder-factory>
<transformer-factory>org.apache.xalan.processor.TransformerFactoryImpl</transformer-factory>
</parser-factory>
</xml>
iii) 添加从 xercesjaxp.properties
加载到 jre/lib 并启动服务器。在这种情况下,weblogic 没有启动。DocumentBuilderFactoryImpl
iv)然后我们先启动服务器,然后在服务器启动jaxp.properties
的运行时复制文件。但没有成功
以上都不适合我们。
非常感谢任何帮助。