我正在将Apache CXF用于我的Web服务。我创建了一个AbstractSoapInterceptor实例。我想在其public void handleMessage(SoapMessage message) throws Fault方法中将拦截消息的XML内容打印到控制台。我该如何实现?

最佳答案

签出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;

      }
}

10-05 23:23