2017-03-08 33 views
1

Im有問題使用有效載荷。我跟着https://docs.wso2.com/display/ESB500/Exposing+Several+Services+as+a+Single+Service使用wso2填充json值的有效載荷

但becouse我看到它在日誌,但有效載荷不具備實值替換$ 1不能創建一個適當的有效載荷

<log level="custom"> 
     <property expression="fn:concat('VIN: ',get-property('vin'),' ModelName: ',get-property('modelName'),' Year: ',get-property('modelYear'))" name="vechicle"/> 
</log> 

<payloadFactory description="VIN message" media-type="json"> 
    <format>{&#xd; 
    "VIN":$1,&#xd; 
    }</format> 
    <args> 
    <arg evaluator="xml" expression="$ctx:vin"/> 
</args> 
</payloadFactory> 

獲取屬性(「VIN」)的工作,什麼是錯的評估

錯誤消息:

Could not get parser from data source for element jsonObject 
TID[-1234] [ESB] [2017-03-07 23:46:37,611] ERROR {org.apache.axiom.om.impl.llom.OMSourcedElementImpl} - Could not get parser from data source for element jsonObject org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.initialize(AbstractXMLStreamReader.java:245) org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.(JsonXMLStreamReader.java:66) org.apache.synapse.commons.staxon.core.json.JsonXMLInputFactory.createXMLStreamReader(JsonXMLInputFactory.java:165) org.apache.synapse.commons.json.JsonUtil.getReader(JsonUtil.java:302) org.apache.synapse.commons.json.JsonDataSource.getReader(JsonDataSource.java:153) org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:225) org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:254) org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getFirstOMChild(OMSourcedElementImpl.java:867) org.apache.axiom.om.impl.OMNavigator._getFirstChild(OMNavigator.java:196) org.apache.axiom.om.impl.OMNavigator.updateNextNode(OMNavigator.java:140) org.apache.axiom.om.impl.OMNavigator.getNext(OMNavigator.java:112) org.apache.axiom.om.impl.SwitchingWrapper.updateNextNode(SwitchingWrapper.java:1113) org.apache.axiom.om.impl.SwitchingWrapper.(SwitchingWrapper.java:235) org.apache.axiom.om.impl.OMStAXWrapper.(OMStAXWrapper.java:74) org.apache.axiom.om.impl.llom.OMStAXWrapper.(OMStAXWrapper.java:52) org.apache.axiom.om.impl.llom.OMContainerHelper.getXMLStreamReader(OMContainerHelper.java:51) org.apache.axiom.om.impl.llom.OMElementImpl.getXMLStreamReader(OMElementImpl.java:736) org.apache.axiom.om.impl.llom.OMElementImpl.cloneOMElement(OMElementImpl.java:1038) org.apache.synapse.util.MessageHelper.cloneSOAPEnvelope(MessageHelper.java:690) 

幫助...

回答

1

這個問題似乎出現在JSON消息中。首先,JSON消息本身的格式應該不重要,因此回車應該是過時的。但是,這似乎不是問題。其次,在$ 1之後有一個逗號,這表明將會有另一個對象,但是有一個回車,然後是右括號,這實際上是破壞了解析器:。我會嘗試像這樣(雖然你可以留在回車,我對ESB 5.0.0測試了)

<payloadFactory description="VIN message" media-type="json"> 
    <format>{ 
    "VIN":$1 
    }</format> 
    <args> 
    <arg evaluator="xml" expression="$ctx:vin"/> 
</args> 
</payloadFactory> 

而且,如果VIN是一個字符串,那麼你可能需要在加引號的格式。

+0

是的,問題是在逗號,這導致不正確的JSON消息,謝謝 – lpastor