Spring WS-基于SOAP请求CDATA中的XmlElement的直接请求到特定端点

时间:2018-07-27 10:24:05

标签: soap jaxb spring-ws

我们正在将旧式SOAP WS应用程序转换为Spring Boot SOAP WS。 SOAP Request结构类似于下面的内容,并且不能更改(以最大程度地减少对客户端的影响)

请注意,请求的更改位于CDATA下的 InputRequest1 InputRequest2 中,并且我的SOAP端点URL相同。

输入请求1

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:au="http://www.example.com/cp">
    <env:Header>
        <ns0:MessageHeader version="1.0" xmlns:ns0="urn:abc:xml:schemas:message-header:v1_0">
        ---- HEADER INFO
        </ns0:MessageHeader>
    </env:Header>
    <env:Body>
        <au:processMessage>
            <au:request><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<InputRequest1 xmlns="http://www.example.com/oagis">
<Header xmlns:header="http://www.example.com/xs/au/header">
---- DATA
</InputRequest1>]]></au:request>
        </au:request>
    </env:Body>
</env:Envelope>

输入请求2

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:au="http://www.example.com/cp">
    <env:Header>
        <ns0:MessageHeader version="1.0" xmlns:ns0="urn:abc:xml:schemas:message-header:v1_0">
        ---- HEADER INFO
        </ns0:MessageHeader>
    </env:Header>
    <env:Body>
        <au:processMessage>
            <au:request><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<InputRequest2 xmlns="http://www.example.com/oagis">
<Header xmlns:header="http://www.example.com/xs/au/header">
---- DATA
</InputRequest2>]]></au:request>
        </au:request>
    </env:Body>
</env:Envelope>

使用Spring WS是否有一种简单的决策方法来识别请求的类型(1或2)并通过使用拦截器或通过@XPathParam重定向到特定的EndPoint?

预先感谢您的帮助。

0 个答案:

没有答案