我正在使用wso2esb4.7.0.i正在使用单个代理中的不同操作我找到了一个示例博客,我经历了那个。但我不太清楚这个博客我的代理是这样的
<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>
在callout meditor上面的服务url用于命中端点和action是关于端点操作但有什么用 SOURCE和TARGET我试图接收到该来源的端点响应以及目标,但我无法得到响应那么两者的用途是什么 以及我如何将我的回复发送给我的客户,这意味着我可以在哪里获得此响应,我需要定义我的接收顺序请参考我任何明确的解释博客
答案 0 :(得分:1)
'source'使用XPath表达式或注册表项指定请求消息的有效内容。 'target'指定将在当前消息上下文中附加结果有效负载(响应)的节点。
通过在示例配置中指定给定,响应将作为消息上下文中SOAP消息正文的第一个子对象附加。
callout mediator和send mediator之间的区别在于callout mediator将通过阻塞调用将响应返回到相同的序列。在send中,响应将返回到OutSequence,您可以在其中将其发送回客户端。
所以在这里你可以使用Send mediator(inSequence的结尾)来将消息发送到OutSequence。然后再在outSequence内部发送一个send,使其返回给客户端。
例如:
将下面的配置添加到inSequence的结尾
<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<send/>
然后在outSequence里面,再做一次发送。
<outSequence>
<send/>
</outSequence>