Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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
CXF 3.0.2“投掷”;java.lang.AssertionError:未实现”;weblogic10.3中的异常_Weblogic_Cxf - Fatal编程技术网

CXF 3.0.2“投掷”;java.lang.AssertionError:未实现”;weblogic10.3中的异常

CXF 3.0.2“投掷”;java.lang.AssertionError:未实现”;weblogic10.3中的异常,weblogic,cxf,Weblogic,Cxf,我们正在尝试使用CXF框架进行webservice调用,涉及CXF-ws-security和weblogic 10.3中部署的应用程序,但收到以下异常,并且似乎选择了weblogic特定的jar,尽管xercesimpl jar存在于/WEB-INF/lib中的应用程序中 选项已尝试,但没有帮助: 使用设置weblogic容器描述符 web inf首选项 对 将JVM参数或系统属性设置为- -Djavax.xml.soap.MessageFactory=com.sun.xml.internal.

我们正在尝试使用CXF框架进行webservice调用,涉及CXF-ws-security和weblogic 10.3中部署的应用程序,但收到以下异常,并且似乎选择了weblogic特定的jar,尽管xercesimpl jar存在于/WEB-INF/lib中的应用程序中

选项已尝试,但没有帮助:

  • 使用设置weblogic容器描述符 web inf首选项
  • 将JVM参数或系统属性设置为-
  • -Djavax.xml.soap.MessageFactory=com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl -Djavax.xml.soap.SOAPFactory=com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl -Djavax.xml.soap.SOAPConnectionFactory=weblogic.wsee.saaj.SOAPConnectionFactoryImpl

  • 将xercesimpl jar添加到maven pom

    例外情况

    ]]ServletException的根本原因。 java.lang.AssertionError:未实现 位于weblogic.xml.dominpl.NodeImpl.setTextContent(NodeImpl.java:216) 位于org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.writeAttribute(XmlWriterToTree.java:137) 位于org.apache.jcp.xml.dsig.internal.dom.xmlWriterotree.writeNamespace(xmlWriterotree.java:114) 位于org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.marshall(DOMXMLSignature.java:211) 位于org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:329) 位于org.apache.wss4j.dom.message.WSSecSignature.computeSignature(WSSecSignature.java:578) 位于org.apache.wss4j.dom.action.SignatureAction.execute(SignatureAction.java:151) 位于org.apache.wss4j.dom.handler.WSHandler.doSenderAction(WSHandler.java:226) 位于org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor.access$100(WSS4JOutInterceptor.java:54) 位于org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptor.handleMessageInternal(WSS4JOutInterceptor.java:282) 位于org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:154) 位于org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:141) 在org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
    在此处输入代码
    位于org.apache.cxf.endpoint.clientmpl.doInvoke(clientmpl.java:514) 位于org.apache.cxf.endpoint.clientmpl.invoke(clientmpl.java:423) 位于org.apache.cxf.endpoint.clientmpl.invoke(clientmpl.java:326) 位于org.apache.cxf.endpoint.clientmpl.invoke(clientmpl.java:279) 位于org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:98) 位于org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:138)

    谢谢, 苏美亚


  • 我最终在不修改任何weblogic启动脚本的情况下找到了答案(在CXF 2.7.0和weblogic 10.3.6上进行了测试)

    出现此问题的原因是CXF与SAAJ的weblogic实现不兼容

    一,。 问:我有一个错误:javax.xml.ws.webserviceeexception:无法创建SAAJ工厂实例。 答:请确保您的类路径中有saaj-impl-1.3.jar,并确保您的应用程序选择这个而不是weblogic

    同样的问题也导致了问题中未实现的错误

    所以我的解决办法是 1) 将saaj impl放在类路径中。如果您使用的是maven,请将依赖项放在pom.xml上

    2) 在weblogic.xml(在您的资源文件夹中)中

    
    com.sun.xml.messaging.saaj*
    
    3) 通过节点管理器重新启动服务器,CXF WS-Security应该正常工作


    希望有帮助

    这篇文章实际上解决了我的问题,但我仍在等待更好的答案。作者提到了一些我认为可能会成为未来问题的警告
        <wls:container-descriptor>
            <wls:prefer-application-packages>
                <wls:package-name>com.sun.xml.messaging.saaj.*</wls:package-name>
            </wls:prefer-application-packages>
        </wls:container-descriptor>