首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WSO2:地址终结点似乎覆盖了wsa:To WS-Addressing属性

WSO2:地址终结点似乎覆盖了wsa:To WS-Addressing属性
EN

Stack Overflow用户
提问于 2013-12-09 21:14:56
回答 2查看 2K关注 0票数 0

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

代码语言:javascript
复制
<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

代码语言:javascript
复制
<wsa:To>http://esb.intermediate.com/proxy</wsa:To>

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

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

代码语言:javascript
复制
<wsa:To>http://ws.backend.com/service</wsa:To>

什么配置可以修复此问题?

EN

回答 2

Stack Overflow用户

发布于 2013-12-10 01:54:47

您需要在wsa:ReplyTo头标记中提供您的后端地址。因此,您的中间层会将响应传递给后端服务。

代码语言:javascript
复制
<header name="ReplyTo" value="http://ws.backend.com/service"/>

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

票数 0
EN

Stack Overflow用户

发布于 2013-12-11 18:23:52

解决方案是您必须自己显式地构建WS-Addressing头部,而不是使用<enableAddressing/>

示例:

代码语言:javascript
复制
<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”与其他值一起使用,并使用“default”端点而不是上面的“address”端点。

SOAP消息被发送到'http://esb.intermediate.com/proxy',WS-Addressing标头是:

代码语言:javascript
复制
<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”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20471581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档