来自财产的WSO2 ESB有效载荷

时间:2016-12-01 12:32:52

标签: wso2 wso2esb

我试图从属性内容创建有效负载:

<payloadFactory media-type="xml">
    <format>$1</format>
    <args>
        <arg evaluator="xml" expression="get-property('Response')"/>
    </args>
</payloadFactory>

WSO2 ESB不接受此作为有效的有效载荷格式。我能做些什么来实现这个目标?

2 个答案:

答案 0 :(得分:2)

您无法使用Payload Factory。它需要这样的包装XML标记。

<payloadFactory media-type="xml">
    <format><Root>$1</Root></format>
    <args>
        <arg evaluator="xml" expression="get-property('Response')"/>
    </args>
</payloadFactory>

但你可以用Enrich mediator做你想做的事。

<enrich>
   <source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
   <target action="replace" type="body"/>
</enrich>

Here是一个类似的样本。

答案 1 :(得分:-1)

可能是因为“响应”的类型。克洛维斯。 我使用它并发现没问题。

<property description="requestBk" expression="json-eval($.)" name="requestBk" scope="default" type="STRING"/>

<payloadFactory media-type="json">
    <format>$1</format>
    <args>
        <arg evaluator="xml" expression="$ctx:requestBk"/>
    </args>
</payloadFactory>

另一个提示。使用$ctx:代替get-property方法可获得更好的效果。因为get-property也会查看registry

是的!正如Bhathiya和Maria建议您也可以使用Enrich mediator,如下所述。 使用Enrich mediator将原始有效内容复制到属性。

<enrich>
  <source clone="false" type="body"/>
  <target action="replace" type="property" property="ORGINAL_PAYLOAD"/>
</enrich>

然后,只要您需要原始有效负载,就可以使用Enrich mediator将此消息正文替换为此属性值,如下所示:

<enrich>
  <source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
  <target action="replace" type="body"/>
</enrich>