这个 header 调解器在从 WSO2 ESB 项目调用 DSS 服务时究竟是如何工作的?
How exactly works this header mediator involved in the call of a DSS service call from a WSO2 ESB project?
我是 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调解人:
<header name="Action" scope="default" value="urn:FindNotProcessed"/>
添加一个 header 指定必须在 DSS 服务上调用的 操作名称 ,此操作实际上被命名为 FindNotProcessed 并且它与定义的查询相关联。
好吧,我的疑问是:
1) value 属性的值指定必须在 DSS 服务上执行的操作的名称,在在这种情况下,该值为 urn:FindNotProcessed。
要执行的操作名称前的 urn: 前缀究竟是什么意思?
2) header 中介定义也包含此属性 name="Action".
具体代表什么?它是否类似于调解器名称或必须在 Action 上设置值以获得某种语义?对于这个具有语义行为的字段,它只是一个名称还是存在一组可能的值?
3) 因此调用 DSS 服务的正确方法是:使用 payloadFactory 中介创建一条消息,将其与header 指定必须在 DSS 服务上执行的操作名称的中介,然后链接一个 callout 执行调用的调解器。我已经这样做了并且有效,这是标准的做法吗?
1) urn:FindNotProcessed是SOAPAction名称,在web服务WSDL中定义。 urn: 只是该名称的一部分,它看起来像一个命名空间,但实际上不是。
2) 通过设置 name="Action",您可以知道您正在设置哪个 HTTP header。在这种情况下,它将设置 SOAPAction: urn:FindNotProcessed。
3) 没错,但您不仅可以使用 Callout,还可以使用 Send 和 Call 调解员也,这取决于你的逻辑。
我是 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调解人:
<header name="Action" scope="default" value="urn:FindNotProcessed"/>
添加一个 header 指定必须在 DSS 服务上调用的 操作名称 ,此操作实际上被命名为 FindNotProcessed 并且它与定义的查询相关联。
好吧,我的疑问是:
1) value 属性的值指定必须在 DSS 服务上执行的操作的名称,在在这种情况下,该值为 urn:FindNotProcessed。
要执行的操作名称前的 urn: 前缀究竟是什么意思?
2) header 中介定义也包含此属性 name="Action".
具体代表什么?它是否类似于调解器名称或必须在 Action 上设置值以获得某种语义?对于这个具有语义行为的字段,它只是一个名称还是存在一组可能的值?
3) 因此调用 DSS 服务的正确方法是:使用 payloadFactory 中介创建一条消息,将其与header 指定必须在 DSS 服务上执行的操作名称的中介,然后链接一个 callout 执行调用的调解器。我已经这样做了并且有效,这是标准的做法吗?
1) urn:FindNotProcessed是SOAPAction名称,在web服务WSDL中定义。 urn: 只是该名称的一部分,它看起来像一个命名空间,但实际上不是。
2) 通过设置 name="Action",您可以知道您正在设置哪个 HTTP header。在这种情况下,它将设置 SOAPAction: urn:FindNotProcessed。
3) 没错,但您不仅可以使用 Callout,还可以使用 Send 和 Call 调解员也,这取决于你的逻辑。