我配置了基于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"/>
答案 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之后添加到邮件中的信息,则可以使用服务激活器。
如果您想确保记录任何异常,请考虑段网关和消息流中的服务激活器。