我有两个用于测试目的的代理服务,它使用JIRA Connector与JIRA连接。第一个,接受“application / json”有效载荷:
<proxy name="PruebaJIRA_01" startOnLoad="true" trace="disable" transports="https http">
<description/>
<target>
<inSequence>
<log level="full"/>
<jira.init>
<username>xxxxxx</username>
<password>xxxxxx</password>
<uri>http://gea-jira.its.ute.com/jiragea</uri>
</jira.init>
<property expression="json-eval($.consulta)" name="query"/>
<jira.searchJira>
<query>{$ctx:query}</query>
</jira.searchJira>
<log level="full"/>
<respond/>
</inSequence>
</target>
</proxy>
第二个,接受“text / xml”有效载荷:
<proxy name="PruebaJIRA_02" startOnLoad="true" trace="disable" transports="https http">
<description/>
<target>
<inSequence>
<property name="messageType" scope="axis2" value="application/json"/>
<log level="full"/>
<jira.init>
<username>xxxxxx</username>
<password>xxxxxx</password>
<uri>http://gea-jira.its.ute.com/jiragea</uri>
</jira.init>
<property expression="//root/consulta" name="query"/>
<jira.searchJira>
<query>{$ctx:query}</query>
</jira.searchJira>
<log level="full"/>
<respond/>
</inSequence>
</target>
</proxy>
似乎JIRA连接器只接受JSON传入数据,所以在第二个我在序列顶部有一个“messageType”转换。
两个服务都运行正常,但问题是:如果我使用xpath表达式,为什么第二个代理会工作?
我正在使用wso2 ESB 4.9.0。
提前致谢。
答案 0 :(得分:0)
ESB从不同的客户端和系统接收不同的消息格式,因为ESB需要ESB内部的规范消息格式来执行所有消息中介任务。因此,消息构建器用于将传入的消息转换为规范格式。在ESB内部使用的规范格式是SOAP。所以你的XPATH表达式肯定适用于soap消息。
MessageType属性用于选择正确的消息格式化程序,消息格式化程序用于构建来自代理的传出流。
更多信息 - demystifying-wso2-esb-pass-through-transport / Working with Message Builders and Formatters