我正在使用wso2 esb 4.9并使用payloadFactory元素创建一个代理并用REST调用它来启动我的BPMN进程,但问题是esb无法转换单个元素的json数组,而esb会丢弃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 :(得分:1)
我使用Postman测试了以上场景,并且它正常工作。请按以下步骤找到步骤;
添加代理并删除邮件存储。 (因为向邮件存储添加空消息会产生以下错误)
[2016-07-11 13:46:53,291]错误 - NativeWorkerPool未捕获异常 java.lang.Error:错误:无法匹配输入 at org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.zzScanError(JsonScanner.java:530) 在org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.yylex(JsonScanner.java:941) 在org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.nextSymbol(JsonScanner.java:310) 在org.apache.synapse.commons.staxon.core.json.stream.impl.JsonStreamSourceImpl.next(JsonStreamSourceImpl.java:149) 在org.apache.synapse.commons.staxon.core.json.stream.impl.JsonStreamSourceImpl.peek(JsonStreamSourceImpl.java:272) 在org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:129) 在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) 在javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88) 在org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681) 在org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) at org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:336) 在org.apache.axiom.om.impl.OMNavigator._getFirstChild(OMNavigator.java:199) 在org.apache.axiom.om.impl.OMNavigator.updateNextNode(OMNavigator.java:140) at 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
使用Postman并使用“POST”命令调用代理服务
将json内容添加到正文
答案 1 :(得分:1)
DilshaniS说: 看起来这是WSO2 ESB 4.9.0中的一个错误,并报告了一个jira this link