Spring Integration Web Service Gateway:将http标头添加为SOAP标头

时间:2015-04-10 12:05:58

标签: spring-integration saaj

我正在尝试编写一个Spring Inbound Webservice Gateway,它应该接受一个完整的SOAP Message,然后将其委托给另一个SOAP Provider(出于安全原因需要)。 应该是这样的 (1)应用 - > (2)SOAP Provicer和Client(这是我的部分/配置) - > (3)第二个SOAP提供者 - > (4)服务

到目前为止我对第(2)项所做的工作:

1)web.xml

MessageDispatcherServlet with Mapping:
<servlet-mapping>
    <servlet-name>spring-ws</servlet-name>
    <url-pattern>/appservices/*</url-pattern>
</servlet-mapping>

2)使用端点映射进行配置

<bean class="org.springframework.ws.server.endpoint.mapping.UriEndpointMapping">
    <property name="defaultEndpoint" ref="ws-in-gw"/>
</bean>

3)Spring Integration inbound-gateway和outbound-gateway的配置

<!-- My Providing Part -->
<int-ws:inbound-gateway id="ws-in-gw" 
    request-channel="in" 
    reply-channel="out" 
    mapped-request-headers="*" />

<int:channel id="in" />

<int:channel id="out" />

<!-- My Client Part -->
<int-ws:outbound-gateway
    id="ws-out-gw-status"
    request-channel="in-status"
    reply-channel="out-status"
    uri="http://${delegationServer}/${delegation.contextroot}/soap/AnotherService"
</int-ws:outbound-gateway>

现在一切正常,但现在我必须在进程2中添加一些HTTP标头(防火墙在从1到2的路上添加到请求中)到SOAP消息

这是我测试的SOAP消息:

<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:stat="http://status.service.promakler.provinzial.com/">

    <soapenv:Body>
        <stat:getStatus/>
    </soapenv:Body>
</soapenv:Envelope>

我认为我必须将入站网关的extract-payload属性设置为false,但这样我得到了一个异常。我想我必须写一个Marshaller / Unmarshaller, 但我不知道该怎么做。结果应该是我认为的SaajSoapMessage。有什么想法吗?

此致  蒂莫

0 个答案:

没有答案