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 オブジェクトに人工的なルートを追加しますか?)