ws:带有邮件头的outbound-gateway自定义拦截器

时间:2016-06-30 06:43:52

标签: web-services spring-integration

我使用ws:outbound-gateway来调用soap服务。我也添加了拦截器。

   <int-ws:outbound-gateway id="wsOutboundGateway"
        request-channel="requestChannel" 
        uri="{soapURI}"
        message-sender="httpMessageSender"
        message-factory="messageFactory"
        interceptor="myInterceptor"
        marshaller="jaxbMarshaller" unmarshaller="jaxbMarshaller">
        <int-ws:uri-variable name="soapURI" expression="headers.soapURI"/>
    </int-ws:outbound-gateway>

myInterceptor是一个实现ClientInterceptor的类。

查询:我在消息头中有需要截取的信息。有没有办法在拦截器中接收消息头。

注意:我在线程局部设置标头值并立即返回拦截器。

任何更好的解决方案,请建议。

1 个答案:

答案 0 :(得分:1)

这取决于前提和背景。

抱歉,您必须分享更多信息。标题是什么?你怎么用的?也许没有必要在ClientInterceptor中拦截它,但在<int-ws:outbound-gateway>之前会更好吗?

<强>更新

  

我在邮件头中有信息,我必须在soap标头中传递它。

实际上ClientInterceptor完全用于不同目的,其意图不会修改消息。

发送前有消息修改WebServiceMessageCallback抽象。

但是有了像SOAP标头这样的要求我可以建议你去研究像DefaultSoapHeaderMapper这样的开箱即用的组件。只有populateStandardHeadersSoapAction的{​​{1}}交易仅填充为populateUserDefinedHeader。因此,请考虑该类的一些扩展,以将自定义标记插入soapHeader.addAttribute()。已经没有任何soapHeader黑客了。