从MessageContext中提取完整的包络xml

时间:2011-07-18 13:04:36

标签: soap spring-ws

我有这样的拦截器:

public class WebServiceInterceptor extends EndpointInterceptorAdapter {

@Inject
private Jaxb2Marshaller myJaxb2Marshaller;

@Inject
private WebServiceHistoryDao webServiceHistoryDao;

@Override
public boolean handleRequest(MessageContext messageContext, Object endpoint)
        throws Exception {

    Source payloadSource = messageContext.getRequest().getPayloadSource();
    Object unmarshaled = myJaxb2Marshaller.unmarshal(payloadSource);

    //EXTRACT XML HERE
    //is there a better way than this:
    String extractedXml = myJaxb2Marshaller.marshal(unmarshaled);

    return true;
}

}

如何提取整个xml信封(用于记录目的 - 将其写入数据库)

1 个答案:

答案 0 :(得分:1)

您不需要编写一个,API中存在一个 - SoapEnvelopeLoggingInterceptor。请参阅javadoc

  

特定于SOAP的EndpointInterceptor,记录SoapMessage消息的完整请求和响应信封。默认情况下,会记录请求,响应和错误消息,但可以使用logRequestlogResponselogFault属性更改此行为。

如果您只需要查看有效负载,而不是整个SOAP信封,那么就有PayloadLoggingInterceptor