我正在尝试使用REST服务在WSB403中吐出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
答案 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