java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl,同时启动weblogic
作为应用程序的一部分,我们使用apache的xerces jaxp解析器。当我们在weblogic 9.2上部署应用程序时,会出现以下错误 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 ii)我们已将最新版本的xalan放入jre/lib/endorced文件夹中。这并没有解决我们的问题 ii)我们在weblogic-application.xml中添加了条目java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl,同时启动weblogic,weblogic,cxf,classcastexception,weblogic9.x,Weblogic,Cxf,Classcastexception,Weblogic9.x,作为应用程序的一部分,我们使用apache的xerces jaxp解析器。当我们在weblogic 9.2上部署应用程序时,会出现以下错误 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]: Inst
<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>
<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>
webapp.encoding.default
UTF-8
javax.jws*
org.apache.xerces*
org.apache.xerces.jaxp*
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>
<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>
org.apache.xerces.jaxp.SAXParserFactoryImpl
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
org.apache.xalan.processor.TransformerFactoryImpl
iii)添加了jaxp.properties
以将DocumentBuilderFactoryImpl
从xerces加载到jre/lib并启动服务器。在这种情况下,weblogic没有启动
iv)然后我们首先启动服务器,然后在服务器启动时的运行时复制jaxp.properties
文件,但没有成功
以上这些都不适合我们
非常感谢您的帮助。您做了太多事情,我不知道具体情况。我的建议是严格遵循我过去在WLS 9.2中成功使用的for WebLogic
<?xml version="1.0" encoding="UTF-8"?>
<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>
</prefer-application-packages>
</weblogic-application>
但是,这是一个暗箱操作。您可以尝试强制使用指定的文档生成器工厂作为命令行选项:
-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
这是假设在类路径中有所需的Xerces builder工厂类
通常,您不应该再使用单独的xerces.jar,除非某些遗留代码需要。Xerces解析器类随JRE一起提供,包名仅以com.sun.org.apache而不是org.apache开头。你也可以试试
-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
并从类路径中完全删除xerces.jar(这是我们在WLS 10.3和Java 1.6上所做的)。我设法解决了DocumentBuilderFactory没有找到简单解决方案的问题
尝试将xercesImpl.jar复制到weblogic MyDomain\servers\MyServer\lib上的特定于域的lib目录。在我的例子中,问题是我依赖于commons digester,后者反过来使用了另一个版本的xerces(这导致了冲突)。因此,您可以查看您的依赖项,以防其他版本的xerces被临时包含