物業

2016-12-01 87 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>