Wir versuchen, einen Webservice-Aufruf unter Verwendung von CXF-Framework mit CXF-ws-Sicherheit und der Anwendung in weblogic 10.3 zu machen, erhalten aber die unten angegebene Ausnahme und scheinen die weblogic-spezifischen jars ausgewählt zu haben, obwohl das jercesimpl jar vorhanden ist in der Anwendung in / WEB-INF / lib.
Optionen versucht, aber hat nicht geholfen:
stimmt.
-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
Hinzufügen von xercesimpl jar zu maven pom.
Ausnahme
]] Hauptursache für ServletException.
java.lang.AssertionError: UNIMPLEMENTED
bei weblogic.xml.domimpl.NodeImpl.setTextContent (NodeImpl.java:216)
bei org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.writeAttribute (XmlWriterToTree.java:137)
bei org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.writeNamespace (XmlWriterToTree.java:114)
unter org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.marshal (DOMXMLSignature.java:211)
unter org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign (DOMXMLSignature.java:329)
bei org.apache.wss4j.dom.message.WSSecSignature.computeSignature (WSSecSignature.java:578)
bei org.apache.wss4j.dom.action.SignaturAction.execute (SignatureAction.java:151)
bei org.apache.wss4j.dom.handler.WSHandler.doSenderAction (WSHandler.java:226)
unter org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor.access $ 100 (WSS4JOutInterceptor.java:54)
an org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor $ WSS4JOutInterceptorInternal.handleMessageInternal (WSS4JOutInterceptor.java:282)
at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor $ WSS4JOutInterceptorInternal.handleMessage (WSS4JOutInterceptor.java:154)
at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor $ WSS4JOutInterceptorInternal.handleMessage (WSS4JOutInterceptor.java:141)
bei org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java307) enter code here
bei org.apache.cxf.endpoint.ClientImpl.doInvoke (ClientImpl.java:514)
bei org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:423)
bei org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:326)
bei org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:279)
bei org.apache.cxf.frontend.ClientProxy.invokeSync (ClientProxy.java:98)
bei org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:138)
Danke, Soumya
Ich fand schließlich die Antwort, ohne irgendein weblogic Startskript zu ändern (geprüft auf CXF 2.7.0 und weblogic 10.3.6
Der Grund für dieses Problem ist, dass CXF nicht mit der Weblogic-Implementierung von SAAJ kompatibel ist. Ссылка
1. F: Ich habe diesen Fehler: javax.xml.ws.WebServiceException: SAAJ-Factory-Instanz kann nicht erstellt werden. A: Bitte stellen Sie sicher, dass Sie das saaj-impl-1.3.jar im Klassenpfad haben und stellen Sie sicher, dass Ihre App diese anstelle von weblogic aufruft.
Das gleiche Problem verursacht auch den Fehler UNIMPLEMENTED in der Frage
Also meine Lösung ist 1) Setze saaj-impl in den Klassenpfad. Wenn Sie maven verwenden, setzen Sie die Abhängigkeit auf pom.xml
2) in weblogic.xml (in Ihrem Ressourcenordner) put
%Vor%3) Starten Sie Ihren Server über Node Manager neu und rechts sollte die CXF WS-Security funktionieren
Ich hoffe, es hilft!