0

我配置了基于 Web 服务的入站消息传递网关。我想记录传入的 SOAP 消息(信封和里面的所有消息)。最好的方法是什么?

我曾尝试使用带有日志记录通道适配器的窃听器,但不知道一个好的表达式值来获取实际的 SOAP XML。如果入站网关配置为不提取有效负载,我会将 SaajSoapMessage 视为有效负载,否则将视为 DOMSource。是否有将 SaajSoapMessage 作为 XML 字符串获取的表达式?

这是我看到 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"/>
4

2 回答 2

0

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

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

于 2013-04-05T13:48:10.467 回答
0

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

如果您使用编组器和解组器,则两者都有侦听器,可以在进行编组/解组之前和之后执行某些操作。

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

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

于 2013-04-12T16:31:34.877 回答