我们正在将旧式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?
预先感谢您的帮助。