【问题标题】:WSO2 ESB access context property in the response sequence of an HTTP endpointHTTP端点的响应序列中的WSO2 ESB访问上下文属性
【发布时间】:2018-02-27 23:05:39
【问题描述】:

我正在调用 HTTP 端点并获取响应 一个序列。响应正在登录seq_sla_resp

<send receive="seq_sla_resp">
    <endpoint key="gov:EDI/SLA/endpoints/edi_sla_payment_ep.xml" />
</send>

在这个响应序列中,我无法获得我之前在调用期间设置的属性(在主代理中)。

<property expression="//m1:sla_row/m1:tran_id/text()"
                            name="tran_id" scope="default" type="STRING"
                            xmlns:m1="http://ws.wso2.org/dataservice" />

当我尝试在seq_sla_resp 中记录该属性时,它会出现以下错误消息

<log>
    <property expression="$tran_id" name="tran_id" xmlns:m0="http://ws.wso2.org/dataservice"/>
</log>

以下是错误。

SynapseXPath Evaluation of the XPath expression $tran_id resulted in an error
org.jaxen.UnresolvableException: Variable tran_id

如何获取响应序列中的上下文值。

在文档中它说默认范围具有最长的属性寿命。

非常感谢任何帮助。

【问题讨论】:

    标签: wso2esb


    【解决方案1】:

    我想你会发现你的表达式在 inSequence 中也不起作用。您应该使用expression="$ctx:tran_id"expression="get-property('tran_id')"

    【讨论】:

      【解决方案2】:

      请注意,如果范围是默认值,WSO2 建议使用 $ctx 而不是 get-property。如果值在消息上下文中不可用,get-property 方法会在注册表中搜索。因此,它会影响性能。

      在你的情况下,你可以使用

      <property expression="$ctx:tran_id" name="tran_id"  scope="default" xmlns:m0="http://ws.wso2.org/dataservice"/>
      

      谢谢 克兰蒂

      【讨论】:

        猜你喜欢
        • 2019-04-23
        • 1970-01-01
        • 1970-01-01
        • 2017-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多