WSO2 ESB PayloadFactory 中介器中的 JSON 格式
Posted
技术标签:
【中文标题】WSO2 ESB PayloadFactory 中介器中的 JSON 格式【英文标题】:JSON format in WSO2 ESB PayloadFactory mediator 【发布时间】:2013-12-29 10:13:57 【问题描述】:PayloadFactory 中介我使用的是 JSON 格式的字符串。问题是,当我在 /repository/conf/axis2/axis2.xml 中启用以下行时,POST 请求工作正常,但 GET 请求会产生错误消息。
<!--messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONStreamFormatter"/-->
<!--messageBuilder contentType="application/json"
class="org.apache.axis2.json.JSONStreamBuilder"/-->
这是贝宝列出所有支付资源的 ESB 模板:
<template name="listPaymentResources" xmlns="http://ws.apache.org/ns/synapse">
<sequence class="sequence">
<payloadFactory media-type="json">
<format>
</format>
</payloadFactory>
<property name="messageType" scope="axis2" value="application/json" />
<call>
<endpoint>
<http method="get" uri-template="uri.var.paypalUrl/v1/payments/payment"/>
</endpoint>
</call>
</sequence>
</template>
代理服务:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="listPaymentResources"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<property xmlns:ns="uri.var.payment"
name="ppurl"
expression="//ns:paypalurl/text()"/>
<PayPal.config>
<appUri>$ctx:ppurl</appUri>
</PayPal.config>
<PayPal.listPaymentResources/>
<respond/>
</inSequence>
<outSequence>
<log/>
<send/>
</outSequence>
</target>
<description/>
</proxy>
错误日志:
[2013-12-11 17:25:10,971] ERROR - TargetHandler Unexpected error: Cannot get a J
SON writer
java.lang.UnsupportedOperationException: Cannot get a JSON writer
at org.apache.axis2.json.JSONStreamFormatter.getJSONWriter(JSONStreamFor
matter.java:63)
at org.apache.axis2.json.AbstractJSONMessageFormatter.getTargetAddress(A
bstractJSONMessageFormatter.java:228)
at org.apache.synapse.transport.passthru.TargetRequest.start(TargetReque
st.java:152)
at org.apache.synapse.transport.passthru.TargetHandler.requestReady(Targ
etHandler.java:136)
at org.apache.http.impl.nio.DefaultNHttpClientConnection.produceOutput(D
efaultNHttpClientConnection.java:244)
at org.apache.synapse.transport.http.conn.LoggingNHttpClientConnection.p
roduceOutput(LoggingNHttpClientConnection.java:112)
at org.apache.synapse.transport.passthru.ClientIODispatch.onOutputReady(
ClientIODispatch.java:88)
at org.apache.synapse.transport.passthru.ClientIODispatch.onOutputReady(
ClientIODispatch.java:41)
at org.apache.http.impl.nio.reactor.AbstractIODispatch.outputReady(Abstr
actIODispatch.java:148)
【问题讨论】:
您使用的 Wso2 esb 版本是什么? 您能否向我们展示您在 EI_HOME/conf/axis2/axis2.xml 中的 messageBuilder 和 messageFormater 部分? 【参考方案1】:我已经在最新版本的 WSO2 ESB 上对该主题进行了一些测试,但我无法重现这个给定的问题。
【讨论】:
以上是关于WSO2 ESB PayloadFactory 中介器中的 JSON 格式的主要内容,如果未能解决你的问题,请参考以下文章
在 WSO2 ESB 5.0.0 中使用 MyBatis 框架