4
votes

PayloadFactory mediator Iā€™m using JSON format string. The Problem is, when I enable the following lines in /repository/conf/axis2/axis2.xml, POST request works fine, but GET request produce error message.

<!--messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONStreamFormatter"/-->
<!--messageBuilder contentType="application/json"
class="org.apache.axis2.json.JSONStreamBuilder"/-->

Here is the ESB template for paypal List all Payment Resources:

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

Proxy service:

<?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>

The Error log:

[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
What is the Wso2 esb version that you are using? ā€“ Vanji
Can you show us your messageBuilder and messageFormater section in EI_HOME/conf/axis2/axis2.xml ? ā€“ Robyn.D

1 Answers

0
votes

I have done some testing on the subject on latest release of the WSO2 ESB and i could not able to reproduce this given issue.