物业

2016-12-01 124 views
1

我试图从属性的内容,创建一个有效载荷WSO2 ESB有效载荷:物业

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

WSO2 ESB是不接受这个作为一个有效载荷格式。我该怎么做才能做到这一点?

+0

为什么你会使用PayloadFactory这个?如果属性的类型为OMElement,则可以使用Enrich介体并将属性替换为信封(或主体)。 –

回答

1

您无法为此使用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

可能是因为'响应'克洛维斯的类型。 我使用这个,发现没有问题。

<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>