0

我正在使用 wso2esb4.7.0。我在单个代理中使用不同的操作我找到了一个示例博客,我通过了。但我不太清楚那个博客我的代理是这样的

    <inSequence xmlns="http://ws.apache.org/ns/synapse">
       <log level="full">
          <property name="M1" value="***************HITTING Transaction PROXY****************"/>
       </log>

       <property name="id" expression="//id/text()"/>
       <property name="name" expression="//name/text()"/>
        <payloadFactory media-type="xml">
          <format>
             <p:my_insert xmlns:p="http://ws.wso2.org/dataservice">           
                <xs:id xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:id>           
                <xs:name xmlns:xs="http://ws.wso2.org/dataservice">$2</xs:name>       
             </p:my_insert>
          </format>
          <args>
             <arg expression="get-property('id')" evaluator="xml"/>
             <arg expression="get-property('name')" evaluator="xml"/>
          </args>
       </payloadFactory>
       <callout serviceURL="https://localhost:9445/services/DTPDS/" action="urn:my_insert">
          <source xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
          <target xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
       </callout>
       <payloadFactory media-type="xml">
          <format>
             <p:pos_insert xmlns:p="http://ws.wso2.org/dataservice">           
                <xs:id xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:id>           
                <xs:name xmlns:xs="http://ws.wso2.org/dataservice">$2</xs:name>       
             </p:pos_insert>
          </format>
          <args>
             <arg expression="get-property('id')" evaluator="xml"/>
             <arg expression="get-property('name')" evaluator="xml"/>
          </args>
       </payloadFactory>
       <callout serviceURL="https://localhost:9445/services/DTPDS/" action="urn:pos_insert">
          <source xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
          <target xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
       </callout>
<log level="full>
<property name="message" value="working"/>
</log>
<inSequence>

在上面的标注调解器中,用于命中端点的服务 url 和操作是关于端点操作的但是 SOURCE 和 TARGET 的用途是什么我试图接收端点响应到这个源以及目标但我无法得到响应然后是什么两者的使用以及我如何将我的回复发送给我的客户这意味着我在哪里可以获得这个回复我需要定义我的接收序列请参考我任何明确的解释博客

4

1 回答 1

1

'source' 使用 XPath 表达式或注册表项指定请求消息的负载。'target' 指定了一个节点,在该节点上生成的有效负载(响应)将附加到当前消息上下文中。

通过在示例配置中指定,响应将作为消息上下文中 SOAP 消息主体的第一个子项附加。

callout mediator 和 send mediator 的区别在于 callout mediator 将通过阻塞调用将响应返回到相同的序列。在发送调解器响应返回到 OutSequence,您可以在其中将其发送回客户端。

因此,在这里您可以使用发送中介(inSequence 的结尾)将消息发送到 OutSequence。然后再次在 outSequence 内部进行发送以使其返回给客户端。

前任:

将以下配置添加到 inSequence 的末尾

<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<send/>

然后在 outSequence 里面,再次发送。

    <outSequence>
        <send/>
    </outSequence>
于 2013-11-12T08:39:59.263 回答