【问题标题】:How exactly works this header mediator involved in the call of a DSS service call from a WSO2 ESB project?从 WSO2 ESB 项目调用 DSS 服务调用所涉及的这个标头调解器究竟是如何工作的?
【发布时间】:2017-03-29 11:09:45
【问题描述】:

我是WSO2的新手,我有以下疑问。

我正在从事一个 ESB 项目。在 链中有这个 header 中介

<?xml version="1.0" encoding="UTF-8"?>
<api context="/glisTest2" name="glisTest2" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET">
        <inSequence>
            <!-- Create empty message to get all samples from DSS -->
            <payloadFactory media-type="xml">
                <format>
                    <body/>
                </format>
                <args>
                    <arg evaluator="xml" expression="get-property('uri.var.int_val')" xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd"/>
                </args>
            </payloadFactory>

            <!-- 
                 Adding an header that defines the action related to the "FindNotProcessed" DSS service
                 used to retrieve all the unprocessed resource on the DB. 
             -->
            <header name="Action" scope="default" value="urn:FindNotProcessed"/>

               ...................................................................
               ...................................................................
               ...................................................................
        </inSequence>

如您所见,header 调解器被链接在 payloadFactory 调解器之后,该调解器构建了一个必须发送到 DSS 的空消息服务。

标头中介:

<header name="Action" scope="default" value="urn:FindNotProcessed"/>

添加一个标头,指定必须在 DSS 服务上调用的 操作名称,该操作实际上被命名为 FindNotProcessed 并且它与定义的查询相关联。

好吧,我的疑问是:

1) value 属性的值指定必须在 DSS 服务上执行的操作的名称,在这种情况下,此值为 瓮:FindNotProcessed

放在要执行的操作名称之前的 urn: 前缀究竟是什么意思?

2) header 中介定义也包含此属性 name="Action"

究竟代表什么?是否必须在 Action 上设置中介名称或值以获取某些语义含义?它只是一个名称还是存在该字段具有语义行为的一组可能值?

3) 所以调用 DSS 服务的正确方法是:使用 payloadFactory 中介创建消息,并用 header 链接它中介者指定必须在 DSS 服务上执行的操作的名称,然后链接一个执行调用的 callout 中介者。我以这种方式完成并且有效,这是标准的方式吗?

【问题讨论】:

    标签: wso2 integration wso2esb wso2dss


    【解决方案1】:

    1) urn:FindNotProcessed 是 SOAPAction 名称,在 Web 服务 WSDL 中定义。 urn: 只是该名称的一部分,它看起来像一个命名空间,但它不是。

    2) 通过设置 name="Action",您可以告诉您正在设置哪个 HTTP 标头。在这种情况下,它将设置 SOAPAction: urn:FindNotProcessed

    3) 没错,但您不仅可以使用 Callout,还可以使用 SendCall 中介,具体取决于您的逻辑。 p>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      相关资源
      最近更新 更多