Распечатать XML-содержимое сообщения SOAP - PullRequest
1 голос
/ 19 октября 2010

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

Ответы [ 3 ]

8 голосов
/ 19 октября 2010

Проверьте это и найдите 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;

      }
}
2 голосов
/ 19 октября 2010

По какой причине вы не можете просто использовать LoggingInInterceptor, поставляемый с CXF? Вы можете просто взять код для этого и использовать его в качестве основы, но в версии 2.3 LoggingInInterceptor был улучшен, чтобы позволить указывать printstream и тому подобное, так что он может "просто работать".

1 голос
/ 02 января 2013

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

<jaxws:endpoint ...>
    <jaxws:features>
        <bean class="org.apache.cxf.feature.LoggingFeature"/>
    </jaxws:features>
</jaxws:endpoint>
...