1

我正在尝试编写配置一个 Spring Inbound Webservice Gateway,它应该接收一个完整的 SOAP 消息,然后将其委托给另一个 SOAP 提供程序(出于安全原因,这是必要的)。应该看起来像 (1) Application -> (2) SOAP Provicer and Client for (THIS is my Part / Configuration) -> (3) Second SOAP Provider -> (4) Services

到目前为止,我为问题 (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 中向 SOAP 消息添加一些 HTTP 标头(在从 1 到 2 的过程中由防火墙添加到请求中)

这是我测试的 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。有任何想法吗?

问候蒂莫

4

0 回答 0