【问题标题】:JSON format in WSO2 ESB PayloadFactory mediatorWSO2 ESB PayloadFactory 中介器中的 JSON 格式
【发布时间】: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 部分?

标签: json rest paypal wso2esb esb


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    相关资源
    最近更新 更多