2016-07-05 47 views
0

我正在使用wso2 esb 4.9並創建了一個帶有payloadFactory元素的代理並使用REST調用它來啓動我的BPMN進程,但問題是esb無法轉換單個元素json數組和esb刪除json數組的括號。這裏是我的代理:WSO2 ESB數組與單個元素JSON到JSON轉換括號丟失

<?xml version="1.0" encoding="UTF-8"?> 


    <proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="InformationIncome" 
     transports="https,http" 
     statistics="disable" 
     trace="disable" 
     startOnLoad="true"> 
    <target> 
     <inSequence> 
     <log level="full"/> 
     <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/> 
     <property name="OUT_ONLY" value="true"/> 
     <payloadFactory media-type="json"> 
      <format> 
       { 
       "processDefinitionId":"myProcess:6:25188", 
       "variables": [ 
        { 
        "name":"text", 
        "value":"$1" 
        } 
       ] 
      } 
      </format> 
      <args> 
       <arg evaluator="json" expression="$.text"/> 
      </args> 
     </payloadFactory> 
     <header name="Authorization" 
       scope="transport" 
       expression="fn:concat('Basic ', base64Encode('admin:admin'))"/> 
     <log level="full"/> 
     <store messageStore="InformationIncomeMS"/> 
     </inSequence> 
    </target> 
    <description/> 
</proxy> 

,這裏是我的要求,從soapUI的內容:

{ 
    "text" : "Hello" 
} 

而且我發現我的JSON變成這樣payloadFactory後:

{ 
    "processDefinitionId":"myProcess:6:25188", 
    "variables": { 
     { 
      "name":"text", 
      "value":"Hello" 
     } 
    } 
} 

它似乎esb json轉換器刪除與單個元素的數組括號內。有任何想法嗎?

+0

這個問題也存在使用WSO2DSS服務器,請問有什麼辦法呢? – zygimantus

+0

我試圖在我的.net微服務中編寫一個模型聯編程序,將json轉換爲單個元素數組的有效格式,並將整數轉換爲字符串轉換,我知道這是不正確的,因爲兩個模塊以這種方式相互耦合,我認爲主要問題存在於jsoStreamBuilder中的wso2 ESB –

回答

1

正如DilshaniS說: 看起來這是在WSO2 ESB 4.9.0中的錯誤,並報告了一個JIRA this link

1

我在郵遞員上面的測試場景中測試過了,它工作正常。請找到以下步驟;

  • 添加代理並刪除消息存儲。 (因爲添加空消息到消息存儲給予以下錯誤)

    [2016年7月11日13:46:53291] ERROR - NativeWorkerPool uncaught異常 java.lang.Error的:錯誤:在組織不能匹配輸入 。 apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.zzScanError(JsonScanner.java:530) at org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.yylex( JsonScanner.java:941) at org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.nextSymbol(JsonScanner.java:310) at org.apache.synapse.commons.staxon.core。 json.stream.impl.JsonStreamSourceImpl.next(JsonStreamSourceImpl.java:149) at org.apache.synapse.commons.staxon.core.json.stream.impl.JsonStreamSourceI mpl.peek(JsonStreamSourceImpl.java:272) at org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:129) at org.apache.synapse.commons.staxon.core。 json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:132) at org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.hasNext(AbstractXMLStreamReader.java:446) at org.apache.synapse.commons.staxon。 core.base.AbstractXMLStreamReader.next(AbstractXMLStreamReader.java:456) at javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88) at org.apache.axiom.om.impl.builder.StAXOMBuilder。 parserNext(StAXOMBuilder.java:681) at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) at org.apache.axiom.om.imp l.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:336) at org.apache.axiom.om.impl.OMNavigator._getFirstChild(OMNavigator.java:199) at org.apache.axiom.om.impl.OMNavigator。 updateNextNode(OMNavigator.java:140) at org.apache.axiom.om.impl.OMNavigator.getNext(OMNavigator.java:112) at org.apache.axiom.om.impl.SwitchingWrapper.updateNextNode(SwitchingWrapper.java: 1113) at org.apache.axiom.om.impl.SwitchingWrapper。(SwitchingWrapper.java:235) at org.apache.axiom.om.impl.OMStAXWrapper。(OMStAXWrapper.java:74) at org.apache。 axiom.om.impl.llom.OMStAXWrapper。(OMStAXWrapper.java:52) at org.apache.axiom.om.impl.llom.OMContainerHelper.getXMLStreamReader(OMContainerHelper.java:51) at org.apache.axiom.om .impl.llo m.OMElementImpl.getXMLStreamReader(OMElementImpl。java的

  • 使用郵差和調用代理服務 「POST」 命令

加JSON內容身體

Snapshot of POSTMAN

  • 發送。 ESB將使用括號正確打印消息。
+0

日誌介體正確地打印帶括號的json消息,但是當消息通過消息代理並且消息處理器將其發送到另一個通過代理時,在最後一次代理日誌介體中打印消息時沒有括號,這裏是流程: Proxy1 - >消息存儲 - >消息處理器 - > Proxy2 - > myEndPoint(.Net api),json在Proxy1中正確打印,但它在Proxy2中沒有括號時被損壞。當我發送單個數組時,也會發生這種情況,如果我將它作爲2個數組括號不會丟棄發送它。 –

+0

如果我改變有效載荷的變量數組這樣不會出現這種情況: 「變量」: { 「名」: 「文本」, 「值」: 「$ 1」 }, { 「名」: 「text2」, 「value」:「$ 1」 } ] –

+0

您可以附加您的請求嗎?您發送json內容的方式 –