1

我正在尝试使用 wso2ESB 构建一个简单的 POC。我使用 Alfresco 服务http://www.alfresco.com/创建了一个简单的直通代理服务

问题是我没有得到完整的 JSON 数据。我读过它与axis2-JSON有关,并且当根目录中有JSONArray时会导致问题。所以我决定使用消息中继。

WSO2 ESB 无法将完整的 JSON 数据转换为 XML

我已经按照文档中的描述编辑了axis2.xml,因此添加了以下几行

<messageFormatter contentType="application/json"
                        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>

<messageBuilder contentType="application/xml"
                class="org.apache.axis2.builder.ApplicationXMLBuilder"/>

但是,当我尝试通过 firefox REST 插件使用代理服务器时重新启动服务器后,ESB 会引发以下异常

    [2012-07-12 10:02:29,125]  WARN - ClientWorker Unexpected response received. HTTP response co
de : 405 HTTP status : Method Not Allowed exception : SOAP message MUST NOT contain a Documen
t Type Declaration(DTD)
[2012-07-12 10:02:29,125] ERROR - NativeWorkerPool Uncaught exception
java.lang.ClassCastException: org.apache.axiom.om.impl.llom.OMTextImpl cannot be cast to org.
apache.axiom.om.OMElement
        at org.apache.synapse.util.MessageHelper.cloneSOAPFault(MessageHelper.java:441)
        at org.apache.synapse.util.MessageHelper.cloneSOAPEnvelope(MessageHelper.java:254)
        at org.apache.synapse.core.axis2.SOAPUtils.convertSOAP11toSOAP12(SOAPUtils.java:95)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbac
kReceiver.java:323)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackRecei
ver.java:160)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
        at org.apache.synapse.transport.nhttp.ClientWorker.run(ClientWorker.java:275)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.ja
va:173)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886
)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)

这是什么原因造成的?问题是 ESB 仍然尝试转换 JSON 对象而不是尝试中继它吗?

解析这些 JSON 对象是否有另一种解决方法(即向 JSON 对象添加人工根?)

4

1 回答 1

1

在构建器中,您还需要将 application/json 设置为使用 org.wso2.carbon.relay.BinaryRelayBuilder。

于 2012-07-12T11:30:51.167 回答