我正在尝试编写一个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。有什么想法吗?
此致 蒂莫