2016-07-05 43 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内容的方式 –