如何在Spring Integration中记录收到的SOAP消息

时间:2013-04-05 12:52:26

标签: soap spring-integration

我配置了基于Web Service的入站消息传递网关。我想记录传入的SOAP消息(信封及其中的所有内容)。最好的方法是什么?

我尝试使用带有日志记录通道适配器的有线分接头,但是不知道它有一个很好的表达式值来获取实际的SOAP XML。如果入站网关配置为不提取有效负载,我将看到SaajSoapMessage为有效负载,否则为DOMSource。是否有表达式将SaajSoapMessage作为XML String?

这是我的配置,我可以看到SaajSoapMessage的toString():

<int:channel id="request">
    <int:interceptors>
        <int:wire-tap channel="logger"/>
    </int:interceptors>
</int:channel>
<int:logging-channel-adapter id="logger" expression="payload" level="DEBUG"/>

<int:channel id="reply"/>
<int-ws:inbound-gateway id="ws-inbound-gateway" request-channel="request" reply-channel="reply"
                        extract-payload="false"/>

2 个答案:

答案 0 :(得分:0)

Spring Integration位于Spring Web Services之上。 SWS有一些可以记录有效载荷和/或包络的拦截器......

http://static.springsource.org/spring-ws/sites/2.0/reference/html/server.html#d5e1416

答案 1 :(得分:0)

Spring Web Services提供了可以使用的拦截器。

如果你使用marshaller和unmarshaller,两者都有听众可以在他们进行编组/解组之前和之后做一些事情。

如果您需要捕获在ws-inbound-gateway之后添加到邮件中的信息,则可以使用服务激活器。

如果您想确保记录任何异常,请考虑段网关和消息流中的服务激活器。