2010-10-19 55 views
0

Я использую Apache CXF для своих веб-сервисов. Я создал экземпляр AbstractSoapInterceptor. В своем методе public void handleMessage(SoapMessage message) throws Fault я хотел бы напечатать XML-содержимое перехваченного сообщения на консоли. Как я могу это достичь?Печать XML-содержимого сообщения SOAP

ответ

8

Проверьте this и найдите INBOUND INTERCEPTOR. Будет ли разместить его здесь для справки ...

public class InterceptorMensajeSOAPIn extends AbstractSoapInterceptor { 

     private static Logger log = 
Logger.getLogger(InterceptorMensajeSOAPIn.class); 



     private SAAJInInterceptor saajIn = new SAAJInInterceptor(); 

     public InterceptorMensajeSOAPIn(){ 

      super(Phase.PRE_PROTOCOL); 

      getAfter().add(SAAJInInterceptor.class.getName()); 

     } 


     public void handleMessage(SoapMessage message) throws Fault { 

     SOAPMessage soapMessage = getSOAPMessage(message); 

     try { 

        soapMessage.writeTo(System.out); 

      } catch (Exception e) { 

        e.printStackTrace(); 

      } 
     } 


     private SOAPMessage getSOAPMessage(SoapMessage smsg){ 

      SOAPMessage soapMessage = smsg.getContent(SOAPMessage.class); 

     if (soapMessage == null) { 

      saajIn.handleMessage(smsg); 

      soapMessage = smsg.getContent(SOAPMessage.class); 

     } 

     return soapMessage; 

     } 
} 
+1

Будет ли это решение работать с CxF 3.x? Я попробовал это, и вызов getContent всегда возвращает null, но, возможно, я делаю что-то еще неправильно или api изменился в 3.0. – bwfrieds

2

какой-либо причине вы не можете просто использовать LoggingInInterceptor, поставляемую с CXF? Вы могли бы просто взять код для этого и использовать его в качестве основы, но в 2.3, LoggingInInterceptor был расширен, чтобы разрешить указание печати и т. Д., Чтобы он мог «просто работать».

1

Вы можете также использовать функцию для этого: org.apache.cxf.feature.LoggingFeature:

<jaxws:endpoint ...> 
    <jaxws:features> 
     <bean class="org.apache.cxf.feature.LoggingFeature"/> 
    </jaxws:features> 
</jaxws:endpoint> 
Смежные вопросы