【问题标题】:Print XML content of SOAP message打印 SOAP 消息的 XML 内容
【发布时间】:2010-10-19 14:28:13
【问题描述】:

我正在为我的网络服务使用 Apache CXF。我创建了一个AbstractSoapInterceptor 的实例。在其public void handleMessage(SoapMessage message) throws Fault 方法中,我想将截获消息的 XML 内容打印到控制台。我怎样才能做到这一点?

【问题讨论】:

    标签: java web-services soap cxf


    【解决方案1】:

    检查this 并搜索入站拦截器。将其放在这里以供参考...

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

    【讨论】:

    • 此解决方案是否适用于 cxf 3.x?我试过了,对 getContent 的调用总是返回 null,但也许我做错了什么或者 api 在 3.0 中发生了变化。
    【解决方案2】:

    您有什么理由不能只使用 CXF 附带的 LoggingInInterceptor?您可以直接获取代码并将其用作基础,但在 2.3 中,LoggingInInterceptor 得到了增强,允许指定要使用的打印流等,因此它可能“正常工作”。

    【讨论】:

      【解决方案3】:

      您也可以为此使用一个功能:org.apache.cxf.feature.LoggingFeature:

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

      【讨论】:

        猜你喜欢
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        • 2017-11-08
        • 1970-01-01
        • 1970-01-01
        • 2016-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多