2016-06-13 130 views
0

我無法從服務器記錄傳出的SOAP消息。 handleMessage方法不會按預期覆蓋郵件內容。我將如何將傳出的SOAP存儲到消息中?CXF日誌SOAP輸出

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 ()); 
    } 
} 

回答

1

有彈簧登錄使用CXF LoggingInInterceptorLoggingOutInterceptor

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()); 

或配置攔截SOAP消息中<cxf:bus>一個更簡單的方法

<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> 

查看更多例子How to log Apache CXF Soap Request and Soap Response using Log4j

+0

這讓我在裏ght路徑。在這個過程中,我碰到了這個系統屬性:https://docs.jboss.org/author/display/WFLY8/Advanced+User+Guide#AdvancedUserGuide-Systemproperty – Jim

+0

我不知道這個屬性。我不知道它是標準的cxf還是自己的jboss – pedrofb