【问题标题】:WSO2: Address Endpoint seems to overwrite wsa:To WS-Addressing propertyWSO2:地址端点似乎覆盖 wsa:To WS-Addressing 属性
【发布时间】:2013-12-09 13:14:56
【问题描述】:

似乎不可能通过另一个 ESB 将 SOAP 消息从 WSO2ESB 转发到后端 Web 服务,因为原始的 wsa:To 值已修改为中间 ESB 的 URL。 以下配置显示了这种行为:

<header name="To" value="http://ws.backend.com/service"/>
<property name="PRESERVE_WS_ADDRESSING" value="true"/>
<send>
    <endpoint name="IntermediateESB">
        <address uri="http://esb.intermediate.com/proxy">
            <enableAddressing/>
        </address>
    </endpoint>
</send>

SOAP 标头现在包含以下wsa:To

<wsa:To>http://esb.intermediate.com/proxy</wsa:To>

address uri 似乎覆盖了原来的 wsa:To 值。

这将在中间 ESB 中失败,因为它需要 wsa:To 中的后端 Web 服务的 URL。 SOAP 标头应该包含以下内容,以使中间 ESB 正常工作:

<wsa:To>http://ws.backend.com/service</wsa:To>

什么配置可以解决这个问题?

【问题讨论】:

    标签: web-services soap wso2esb endpoint ws-addressing


    【解决方案1】:

    您需要在 wsa:ReplyTo 标头标签中提供您的后端地址。因此,您的中间人将继续响应后端服务。

    <header name="ReplyTo" value="http://ws.backend.com/service"/>
    

    更多信息:http://www.w3.org/Submission/ws-addressing/

    【讨论】:

    • 感谢您的回答,但这不是我想要达到的目标。
    【解决方案2】:

    解决方案是您必须自己显式构建 WS-Addressing 标头,而不是使用&lt;enableAddressing/&gt;

    例子:

    <header xmlns:wsa="http://www.w3.org/2005/08/addressing" name="wsa:To" value="http://ws.backend.com/service"/>
    <header xmlns:wsa="http://www.w3.org/2005/08/addressing" name="wsa:MessageID" expression="get-property('MessageID')"/>
    <header xmlns:wsa="http://www.w3.org/2005/08/addressing" name="wsa:Action" value="http://ws.backend.com/operation"/>
    <header name="To" value="http://esb.intermediate.com/proxy"/>
    <header name="Action" value="http://ws.backend.com/operation"/>
    <property name="PRESERVE_WS_ADDRESSING" value="true" scope="default" type="STRING"/>
    <send>
        <endpoint name="IntermediateESB">
            <address uri="http://esb.intermediate.com/proxy"/>
        </endpoint>
    </send>
    

    请注意,您必须使用相同的值设置两次“Action”。 另请注意,您可以使用具有不同值的“To”,并使用“默认”端点而不是上面的“地址”端点。

    SOAP 消息发布到“http://esb.intermediate.com/proxy”,WS-Addressing 标头为:

    <wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing">http://ws.backend.com/service</wsa:To>
    <wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing">urn:uuid:52aad1f4-9295-43f6-90c0-304e87922c27</wsa:MessageID>
    <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://ws.backend.com/operation</wsa:Action>
    

    “IntermediateESB”现在可以将此 SOAP 消息转发给“http://ws.backend.com/service”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 2017-08-14
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      相关资源
      最近更新 更多