2016-02-24 29 views
8

Stiamo provando a effettuare una chiamata al servizio Web utilizzando il framework CXF che coinvolge la sicurezza CXF-ws e l'applicazione distribuita in weblogic 10.3, ma ricevendo il sotto l'eccezione e sembra che i jar specifici di weblogic siano raccolti, sebbene il jar xercesimpl sia presente nell'applicazione in/WEB-INF/lib.CXF 3.0.2 lancio di un'eccezione "java.lang.AssertionError: UNIMPLEMENTED" in weblogic10.3

Opzioni provato, ma non ha aiutato:

  1. Impostazione del descrittore contenitore weblogic con preferenze WEB-INF

vero.

  1. Impostazione gli argomenti JVM o la proprietà di sistema come -

-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

  1. Aggiunta di barattolo di xercesimpl a pom maven.

    Eccezione

    ]] Root causa di ServletException. java.lang.AssertionError: non implementato a weblogic.xml.domimpl.NodeImpl.setTextContent (NodeImpl.java:216) a org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.writeAttribute (XmlWriterToTree.java: 137) in org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.writeNamespace (XmlWriterToTree.java:114) in org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.marshal (DOMXMLSignature. java: 211) in org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign (DOMXMLSignature.java:329) in org.apache.wss4j.dom.message.WSSecSignature.computeSignature (WSSecSignature.java: 578) in org.apache.wss4j.dom.action.SignatureAction.execute (SignatureAction.java:151) presso org.apache.wss4j.dom.handler.WSHandler.doSend erAction (WSHandler.java:226) a 100 org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor.access $ (WSS4JOutInterceptor.java:54) a org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor $ WSS4JOutInterceptorInternal .handleMessageInternal (WSS4JOutInterceptor.java:282) a org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor $ WSS4JOutInterceptorInternal.handleMessage (WSS4JOutInterceptor.java:154) a org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor $ WSS4JOutInterceptorInternal.handleMessage (WSS4JOutInterceptor.java:141) a org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:307) enter code here a org.apache.cxf.endpoint.ClientImpl.doInvoke (ClientImpl.java: 514) in org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl .java: 423) su org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:326) su org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:279) su org.apache .cxf.frontend.ClientProxy.invokeSync (ClientProxy.java:98) in org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java: 138)

    Grazie, Soumya

+0

questo post ha effettivamente risolto il mio problema http://cxf.547215.n5.nabble.com/Running-CXF-WSS4J-on-Weblogic-td5626091.html ma sto ancora aspettando una risposta migliore. L'autore ha menzionato alcuni avvertimenti che ritengo possano costituire un problema lungo la strada –

risposta

2

ho finalmente trovato la risposta senza modificare qualsiasi script di avvio di WebLogic (testato su CXF 2.7.0 e 10.3.6 weblogic

La ragione di questo problema è che CXF non è compatibile con weblogic attuazione SAAJ. 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.

lo stesso problema è anche la causa del IMPLEMENTATO e rror nella domanda

Quindi la mia soluzione è 1) inserire saaj-impl in classpath. Se si utilizza Maven, mettere la dipendenza da pom.xml

2) in weblogic.xml (nella cartella di risorse) mettere

<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) Riavviare il server tramite Node Manager e di diritto della CXF WS-Security dovrebbe funzionare

Spero che aiuti!