REST服务中的WSo2 ESB 4.0.3和JSON

时间:2012-03-07 16:47:48

标签: json rest wso2 wso2esb

我正在尝试使用REST服务在WSB403中吐出JSON输出,但我一直非常不成功。我按照以下链接中列出的步骤进行操作。

ESB and JSON

我添加了DynamicResponseModule,我已全局分配了它。

当我正常运行REST服务时,我按预期获得XML格式的输出,但是当我尝试添加“response=json”时,我的服务超时,我得到以下堆栈跟踪。

DynamicResponseModule在内部应该将此responseType映射到application/JSON/Badgerfish,当它执行此操作时,我会得到以下堆栈跟踪。

  

java.lang.RuntimeException:数据源中的元素名称空间是   http://ws.apache.org/axis2,而不是预期的   org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:287)   在   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)   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)at   org.apache.axiom.om.impl.llom.OMStAXWrapper。(OMStAXWrapper.java:52)at   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:256)   在   org.apache.synapse.core.axis2.SOAPUtils.convertSOAP11toSOAP12(SOAPUtils.java:95)   在   org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:323)   在   org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:160)   在org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)at at   org.apache.synapse.transport.nhttp.ClientWorker.run(ClientWorker.java:275)   在   org.apache.axis2.transport.base.threads.NativeWorkerPool $ 1.run(NativeWorkerPool.java:173)   在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(ThreadPoolExecutor.java:886)   在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908)   在java.lang.Thread.run(Thread.java:662)这些是消息   我已添加到axis2.xml的格式化程序和构建器   类= “org.apache.axis2.json.JSONOMBuilder”/>   类= “org.apache.axis2.json.JSONBadgerfishOMBuilder”/>
     类= “org.apache.axis2.json.JSONOMBuilder”/>
     类= “org.apache.axis2.json.JSONBadgerfishMessageFormatter”/>
     类= “org.apache.axis2.json.JSONMessageFormatter”/>

知道我在这里缺少什么吗?

谢谢

Narsi

1 个答案:

答案 0 :(得分:1)

您可以从样本[1]中获得启发。 (请注意,如果要从json切换到soap11,则必须将端点格式设置为soap11。)

在axis2.xml中使用json message builder和formtter获取正确的内容类型(例如application / json)

[1] http://wso2.org/project/esb/java/4.0.3/docs/samples/advanced_mediation_samples.html#Sample440