Hi,

I am seeing an error in ESB 5.0.0 when making SOAP to JSON conversion via a
proxy service. When I invoke the proxy using following curl command the
operation was successful, but I could see some errors logged in the console.

When I search for the error, I found a solution given in [1]. When I try
it, the error got resolved. But still, I am getting a SOAP payload as the
response message.

Here is my proxy service.

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse";
       name="newproxy1.2"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="http,https">
   <target>
      <inSequence>
         <header name="Authorization"
                 scope="transport"
                 value="Basic cGlyaXlhOnBpcml5YTEyMw=="/>
         <log>
            <property expression="$axis2:HTTP_METHOD" name="httpmethod ===
"/>
         </log>
         <switch source="$axis2:HTTP_METHOD">
            <case regex="^(.*(GET)).*$">
               <payloadFactory media-type="xml">
                  <format>
                     <soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/";
                                       xmlns:ser="
http://service.sample.ninewells.com";>
                        <soapenv:Header>
                           <abc>2611</abc>
                        </soapenv:Header>
                        <soapenv:Body>
                           <ser:readNinewells>
                              <ser:patientId>$1</ser:patientId>
                           </ser:readNinewells>
                        </soapenv:Body>
                     </soapenv:Envelope>
                  </format>
                  <args>
                     <arg xmlns:ns="http://org.apache.synapse/xsd";
                          evaluator="xml"
                          expression="$url:patientId"/>
                  </args>
               </payloadFactory>
               <property name="SOAPAction"
                         scope="transport"
                         type="STRING"
                         value="urn:readNinewells"/>
               <header name="Action" scope="default"
value="urn:readNinewells"/>
               <property name="messageType"
                         scope="axis2"
                         type="STRING"
                         value="application/xml"/>
               <send>
                  <endpoint>
                     <address format="soap11"
                              uri="https://
<IP>:<PORT>/services/NinewellsPatientService"/>
                  </endpoint>
               </send>
            </case>
            <case regex="^(.*(DELETE)).*$">
               <payloadFactory media-type="xml">
                  <format>
                     <soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/";
                                       xmlns:ser="
http://service.sample.ninewells.com";>
                        <soapenv:Header>
                           <abc>2611</abc>
                        </soapenv:Header>
                        <soapenv:Body>
                           <ser:deleteNinewells>
                              <ser:patientId>$1</ser:patientId>
                           </ser:deleteNinewells>
                        </soapenv:Body>
                     </soapenv:Envelope>
                  </format>
                  <args>
                     <arg xmlns:ns="http://org.apache.synapse/xsd";
                          evaluator="xml"
                          expression="$url:patientId"/>
                  </args>
               </payloadFactory>
               <property name="SOAPAction"
                         scope="transport"
                         type="STRING"
                         value="urn:deleteNinewells"/>
               <header name="Action" scope="default"
value="urn:deleteNinewells"/>
               <property name="messageType"
                         scope="axis2"
                         type="STRING"
                         value="application/xml"/>
               <send>
                  <endpoint>
                     <address format="soap11"
                              uri="https://
<IP>:<PORT>/services/NinewellsPatientService"/>
                  </endpoint>
               </send>
            </case>
            <default/>
         </switch>
      </inSequence>
      <outSequence>
         <property name="messageType"
                   scope="axis2"
                   type="STRING"
                   value="application/json"/>
         <send/>
      </outSequence>
   </target>
   <description/>
</proxy>

My curl command is  curl -X DELETE
http://piriya-ThinkPad-X1-Carbon-5th:8284/services/newproxy1.2?patientId=1031

The exception in the console is:

ERROR - JsonUtil #writeAsJson. Payload could not be written as JSON.
MessageID: urn:uuid:752a8cd2-03a7-4564-8645-7652db5c8666
[2017-11-17 10:06:30,700] ERROR - PassThroughHttpSender Failed to submit
the response
org.apache.axis2.AxisFault: Payload could not be written as JSON.
at org.apache.synapse.commons.json.JsonUtil.writeAsJson(JsonUtil.java:264)
at
org.apache.synapse.commons.json.JsonStreamFormatter.writeTo(JsonStreamFormatter.java:61)
at
org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:566)
at
org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:264)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:222)
at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:531)
at
org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:118)
at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
at
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:337)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:560)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:194)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at
org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:260)
at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
[2017-11-17 10:06:30,702] ERROR - Axis2Sender
Content-Type:application/json,<?xml version='1.0'
encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Body/></soapenv:Envelope>
Unexpected error sending message back
org.apache.axis2.AxisFault: Failed to submit the response
at
org.apache.synapse.transport.passthru.PassThroughHttpSender.handleException(PassThroughHttpSender.java:624)
at
org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:266)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:222)
at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:531)
at
org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:118)
at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
at
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:337)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:560)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:194)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at
org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:260)
at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.axis2.AxisFault: Payload could not be written as JSON.
at org.apache.synapse.commons.json.JsonUtil.writeAsJson(JsonUtil.java:264)
at
org.apache.synapse.commons.json.JsonStreamFormatter.writeTo(JsonStreamFormatter.java:61)
at
org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:566)
at
org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:264)


[1] [Dev] [ESB] JSON to SOAP conversion issue

Could you please suggest how I can overcome this issue or correct me if I
am wrong?

Thanks,
Piriya


-- 
Regards,

*Piriya Sivalingam*

*Software Engineer - Support Team*

*WSO2*
*Mobile : +94 77 8462039*

[image: http://wso2.com/signature] <http://wso2.com/signature>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to