在WSO2 ESB中使用属性介体时获取错误的值

时间:2017-02-01 08:37:30

标签: properties wso2 mediator

我使用属性“INC”来存储传入消息(在日志中正确显示)并通过有效负载介体正确映射。

我通过有效载荷获得的修改后的结构如下所示(正确映射)

稍后,我使用如下的callout mediator来获取此端点的响应。

使用LogText查看响应。

然后添加过滤器如下:

<property name="INC" expression="get-property('IntRequest')" scope="default" type="STRING"/>

<property name="LogText" value="call response" scope="default" type="STRING"/>

<filter xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:platformFaults="urn:faults_2015_1.platform.webservices.com" source="//platformFaults:code/text()" regex="WS_CONCUR_SESSION_DISALLWD"> <then> <log level="full" separator=",*Fault in Call***"> <property name="REQUEST" expression="get-property('INC')" scope="default" type="STRING" /> </log> </then> <else/> </filter>

但是,在这里我没有获得REQUEST的价值..它显示了“呼叫响应”的价值。 我如何正确获得REQUEST的值?

2 个答案:

答案 0 :(得分:1)

尝试使用enrich介体来存储请求消息正文

<enrich>
  <source clone="true" type="body"/>
  <target property="Request_Message" type="property"/>
</enrich>

然后调用属性

<log>
    <property expression="get-property('Request_Message')" name="REQUEST"/>
</log>

答案 1 :(得分:0)

您在哪里定义了序列中的“IntRequest”属性?我在你的配置中找不到它。如果将日志级别更改为自定义,则可以更清楚地看到系统日志中的请求值