WSO2 ESB PayloadFactory介体中的JSON格式

时间:2013-12-11 12:27:14

标签: json rest paypal wso2esb esb

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"/-->

以下是paypal的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) 

1 个答案:

答案 0 :(得分:0)

我已经在WSO2 ESB的最新版本上对该主题进行了一些测试,我无法重现这个问题。