Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl,同时启动weblogic_Weblogic_Cxf_Classcastexception_Weblogic9.x - Fatal编程技术网

java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl,同时启动weblogic

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

作为应用程序的一部分,我们使用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中添加了条目

<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被临时包含