作爲我們應用程序的一部分,我們使用apache的xerces jaxp解析器。當我們在weblogic 9.2上部署應用程序時,我們得到以下錯誤。啓動weblogic時java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.cxf.wsdl.WSDLManager' defined in class path resource [META-INF/cxf/cxf.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.wsdl11.WSDLManagerImpl]: Constructor threw exception; nested exception is java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
根據我們的分析中,WebLogic試圖加載自己的DocumentBuilderFactoryImpl
這是目前在的weblogic.jar,而不是Apache的Xerces。
我們嘗試了以下迫使weblogic的從Xerces的
加載DocumentBuilderFactoryImpl
我),我們添加了以下標籤進入weblogic.xml
<prefer-web-inf-classes>true</prefer-web-inf-classes>
II),我們已經把xalan的最新版本的JRE/lib/endorced文件夾。這並沒有解決我們的問題。
ⅱ)我們已經添加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>
ⅱ)添加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>
ⅲ)添加jaxp.properties
加載DocumentBuilderFactoryImpl
從xerces到jre/lib並啓動服務器。在這種情況下,weblogic沒有啓動。
Ⅳ),則我們首先啓動的服務器,然後在運行時複製的jaxp.properties
文件時,服務器starts.But沒有成功
以上都不爲我們工作。
任何幫助,高度讚賞。