如果有任何方法拦截发送到ws入站网关的soap响应,请将元信息添加到SOAP标头并将整个soap信封传递给SI文件出站适配器,请将该响应记录在文件中。
答案 0 :(得分:0)
您应该实施EndpointInterceptor
并将其注入AbstractEndpointMapping
。
在其handleResponse()
中,您可以访问
SoapMessage soapMessage = ((SoapMessage) messageContext.getResponse());
执行您想要的任何操作,并将Spring Integration Message发送到<int-file:outbound-channel-adapter>
的注入频道。
<强>更新强>
1)发送回ws入站网关的响应也被修改,我不想要。我只想修改发送到文件适配器的soap响应。因为它有一些要记录的元信息2)如何使文件文件出站适配器记录异步..就像wiretap一样。
首先抱歉延迟。
不,你不能用同一个对象做到这一点。这是多线程环境中可变对象的典型问题。如果一个线程修改对象,另一个线程可以看到这些更改在这种情况下,WireTap
无济于事。
我建议你以某种方式{@ 1}}你的SOAP Message对象,或者甚至更好地将它转换为String,构建一条新消息,然后才将它发送到文件适配器:
clone