gpt4 book ai didi

weblogic - CXF 3.0.2 在 weblogic10.3 中抛出 "java.lang.AssertionError: UNIMPLEMENTED "异常

转载 作者:行者123 更新时间:2023-12-04 08:48:00 25 4
gpt4 key购买 nike

我们正在尝试使用涉及 CXF-ws 安全性和部署在 weblogic 10.3 中的应用程序的 CXF 框架进行 webservice 调用,但是收到以下异常并且似乎拾取了 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。

    异常(exception)

    ]] ServletException 的根本原因。
    java.lang.AssertionError: 未实现
    在 weblogic.xml.domimpl.NodeImpl.setTextContent(NodeImpl.java:216)
    在 org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.writeAttribute(XmlWriterToTree.java:137)
    在 org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.writeNamespace(XmlWriterToTree.java:114)
    在 org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.marshal(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$WSS4JOutInterceptorInternal.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) enter code here 在 org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
    在 org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
    在 org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326)
    在 org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.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实现不兼容。 http://cxf.apache.org/docs/application-server-specific-configuration-guide.html

    1. Q: I have this error: javax.xml.ws.WebServiceException: Cannot create SAAJ factory instance. A: Please make sure you have the saaj-impl-1.3.jar in the classpath and make sure your app picks up this one instead of weblogic one.



    同样的问题也导致问题中的 UNIMPLEMENTED 错误

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

    2)在weblogic.xml(在你的资源文件夹中)放
        <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>

    3)通过节点管理器重新启动您的服务器,CXF WS-Security 应该可以正常工作

    希望能帮助到你!

    关于weblogic - CXF 3.0.2 在 weblogic10.3 中抛出 "java.lang.AssertionError: UNIMPLEMENTED "异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35601843/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com