2016-08-23 54 views
1

我有兩個返回一些簡單JSON的REST服務。我正在使用克隆介體來調用每個服務,然後將聚合消息返回給客戶端。WSO2 ESB - 在使用具有REST端點的克隆介體時解析JSON時出錯

的問題是,每次我調用API,我得到以下錯誤的ESB輸出:

ERROR - OMSourcedElementImpl Could not get parser from data source for element jsonObject

我單獨測試相同的REST服務,而克隆的調節劑,它工作沒有問題。

這裏是API序列分析:

<api xmlns="http://ws.apache.org/ns/synapse" name="PolicyQuery" context="/policy/query"> 
    <resource methods="POST"> 
     <inSequence> 
     <property name="ROOT" scope="default"> 
      <root:rootelement xmlns:root="www.wso2esb.com"/> 
     </property> 
     <log level="full"/> 
     <clone continueParent="true" id="test" sequential="true"> 
      <target> 
       <sequence> 
        <send> 
        <endpoint> 
         <address uri="http://ip.jsontest.com/" format="rest"/> 
        </endpoint> 
        </send> 
       </sequence> 
      </target> 
      <target> 
       <sequence> 
        <send> 
        <endpoint> 
         <address uri="http://ip.jsontest.com/" format="rest"/> 
        </endpoint> 
        </send> 
       </sequence> 
      </target> 
     </clone> 
     </inSequence> 
     <outSequence> 
     <log level="full"/> 
     <aggregate> 
      <completeCondition> 
       <messageCount min="-1" max="-1"/> 
      </completeCondition> 
      <onComplete expression="//return" enclosingElementProperty="ROOT"> 
       <property name="messageType" value="application/json" scope="axis2" type="STRING"/> 
       <send/> 
      </onComplete> 
     </aggregate> 
     </outSequence> 
    </resource> 
</api> 

上午我做錯了什麼?我使用的是WSO2 5.0.0(我也用4.9.0測試過,並且遇到同樣的問題)。

我將請求發送有效載荷:

{ 
    IdNumber : "8008185315088", 
    LastName : null 
} 

回答

1

此更新失序這樣以後我工作得很好。你可以試試這個嗎?

<outSequence> 
    <log level="full"/> 
    <aggregate> 
     <completeCondition> 
      <messageCount min="2" max="2"/> 
     </completeCondition> 
     <onComplete expression="//ip" enclosingElementProperty="ROOT"> 
      <property name="messageType" value="application/json" scope="axis2" type="STRING"/> 
      <send/> 
     </onComplete> 
    </aggregate> 
    </outSequence> 

注意:如果您收到的json格式錯誤,則會發生錯誤。但對於這個樣本,我沒有看到這樣的問題。

編輯

問題是與JSON格式。它應該像這樣修復。

{ 
    "IdNumber" : "8008185315088", 
    "LastName" : null 
} 
+0

謝謝,但我仍然得到同樣的錯誤:'[2016年8月23日13:49:56240] INFO - LogMediator爲:/政策/查詢,郵件ID:金塔:UUID:e8019694-2c25-4b29 -b9ea-a8ae9d4af41e,方向:請求,MESSAGE =執行默認'fault'序列,ERROR_CODE = 0,ERROR_MESSAGE =從數據源獲得解析器時出錯:null,Payload:{ IdNumber:'8008185218088', Last Name:null } –

+0

你是否確定這個問題是由outSequence引起的?即使我修改outSequence只記錄,我仍然得到這個問題...' ' –

+0

此外,現在我想到它,它有什麼到json,我張貼到api,它被轉發到端點?查看我之前評論中的有效負載信息。 –