Soap 从MessageContext提取完整的信封xml

Soap 从MessageContext提取完整的信封xml,soap,spring-ws,Soap,Spring Ws,我有一个这样的拦截器: public class WebServiceInterceptor extends EndpointInterceptorAdapter { @Inject private Jaxb2Marshaller myJaxb2Marshaller; @Inject private WebServiceHistoryDao webServiceHistoryDao; @Override public boolean handleRequest(MessageContext

我有一个这样的拦截器:

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(用于日志记录-将其写入数据库)

您不需要编写一个,API中已有一个-
SOAPEnvelopeLogginInterceptor
。看

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


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

我找到了一个解决方案,并将其粘贴到原始帖子中(marshaller提供的解决方案)。有更好的方法吗?我正在使用PayloadLoggingInterceptor查看有效负载。但我需要的是将它保存到数据库中。为此,我将自己的拦截器与一个DAO对象一起使用。@Benchik:所以,对上面的一个类进行子类化,或者查看它们的源代码以了解它们是如何工作的。