2016-06-13 11 views
0

Ich habe Probleme beim Protokollieren einer ausgehenden SOAP-Nachricht vom Server. Die Methode handleMessage überschreibt den Nachrichteninhalt nicht wie erwartet. Wie würde ich die ausgehende SOAP in der Nachricht speichern?CXF-Protokoll SOAP-Ausgabe

public class OutgoingSoapInterceptor extends AbstractPhaseInterceptor<Message> { 
    private static final Logger logger = LoggerFactory.getLogger(OutgoingSoapInterceptor.class.getName()); 

    public OutgoingSoapInterceptor() 
    { 
     super(Phase.PRE_STREAM); 
    } 

    @Override 
    public void handleMessage(Message message) throws Fault { 
     logger.debug("outbound soap handleMessage"); 

     OutputStream os = message.getContent (OutputStream.class); 
     CacheAndWriteOutputStream cwos = new CacheAndWriteOutputStream (os); 
     message.setContent (OutputStream.class, cwos); 

     cwos.registerCallback (new LoggingOutCallBack ()); 
    } 
} 

Antwort

1

Es ist ein einfacher Weg, um die SOAP-Nachrichten mit CXF LoggingInInterceptor und LoggingOutInterceptor

LogUtils.setLoggerClass(org.apache.cxf.common.logging.Log4jLogger.class); 

    yourService = new YourService(wsdlURL, SERVICE_NAME); 
    port = yourService.getServicePort(); 

    Client client = ClientProxy.getClient(port); 
    client.getInInterceptors().add(new LoggingInInterceptor()); 
    client.getOutInterceptors().add(new LoggingOutInterceptor()); 

oder Konfigurieren von Abfangraketen in <cxf:bus> mit Feder anmelden

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jaxws="http://cxf.apache.org/jaxws" 
    xmlns:cxf="http://cxf.apache.org/core" 
    xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd 
    http://cxf.apache.org/core 
    http://cxf.apache.org/schemas/core.xsd"> 

    <import resource="classpath:META-INF/cxf/cxf.xml" /> 

    <cxf:bus> 
     <cxf:features> 
      <cxf:logging /> 
     </cxf:features> 
    </cxf:bus> 

    <jaxws:endpoint ... />   
</beans> 

Weitere Beispiele finden Sie in How to log Apache CXF Soap Request and Soap Response using Log4j

+0

Das brachte mich auf den ri Ght Weg. In diesem Prozess lief ich über diese Systemeigenschaft: https://docs.jboss.org/author/display/WFLY8/Advanced+User+Guide#AdvancedUserGuide-Systemproperty – Jim

+0

Ich kannte die Eigenschaft nicht. Ich weiß nicht, ob es Standard von cxf oder eigenen jboss ist – pedrofb