Re: [Dev] [ESB] JSON to SOAP conversion issue
Hi Rajith, Thanks, the error got resolved after using application/xml as messageType. However, I am not getting a SOAP payload as the response as I got earlier. Here are the two responses I got: 1. with JsonBuilder and JsonFormatter HTTP/1.1 200 OK Host: localhost:8283 SOAPAction: Content-Type: text/xml; charset=UTF-8 Accept: */* Date: Sun, 18 Dec 2016 19:15:43 GMT Transfer-Encoding: chunked http://schemas.xmlsoap.org/soap/envelope/";> ** *world* ** 2. with JsonStreamBuilder and JsonStreamFormatter HTTP/1.1 200 OK Host: localhost:8280 SOAPAction: Content-Type: application/xml; charset=UTF-8 Accept: */* Date: Mon, 19 Dec 2016 06:40:36 GMT Transfer-Encoding: chunked ** *world* ** Thanks! Malintha On Mon, Dec 19, 2016 at 3:24 AM, Rajith Vitharana wrote: > Hi Malinttha, > > Try with [1] in the proxy instead of "text/xml". > > [1] - type="STRING"/> > > Thanks, > > On 18 December 2016 at 13:19, Malintha Amarasinghe > wrote: > >> Hi all, >> >> I am seeing error [1] in ESB 5.0.0 and 4.9.0 while checking SOAP <-> JSON >> conversion via a proxy. I have attached the Proxy and the sample backend >> API (json) I used. >> >> When invoke the proxy using the following curl command I can see the >> error [1] and client is not getting any response. >> >> curl http://localhost:8280/services/Soap2JsonProxy -X POST -H >> "Content-Type: text/xml" -H 'SOAPAction: "urn:getVersion"' >> >> But the error goes away if I used following message builder and formatter >> for application/json content type. And client gets the converted json to >> soap payload successfully. >> >>> class="org.apache.synapse.comm >> ons.json.JsonBuilder"/> >> >>> class="org.apache.synapse.comm >> ons.json.JsonFormatter"/> >> >> Is this a limitation/bug or am I doing something wrong? >> >> [1] [2016-12-19 00:34:15,306] ERROR - PassThroughHttpSender Failed to >> submit the response >> org.apache.axis2.AxisFault: Can not output XML declaration, after other >> output has already been done. >> at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) >> at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo >> (SOAPMessageFormatter.java:78) >> at org.apache.synapse.transport.passthru.PassThroughHttpSender. >> submitResponse(PassThroughHttpSender.java:555) >> 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(Axis2Send >> er.java:222) >> at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(A >> xis2SynapseEnvironment.java:531) >> at org.apache.synapse.mediators.builtin.SendMediator.mediate(Se >> ndMediator.java:118) >> at org.apache.synapse.mediators.AbstractListMediator.mediate(Ab >> stractListMediator.java:97) >> at org.apache.synapse.mediators.AbstractListMediator.mediate(Ab >> stractListMediator.java:59) >> at org.apache.synapse.mediators.base.SequenceMediator.mediate(S >> equenceMediator.java:158) >> at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.inject >> Message(Axis2SynapseEnvironment.java:337) >> at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handle >> Message(SynapseCallbackReceiver.java:554) >> at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receiv >> e(SynapseCallbackReceiver.java:188) >> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) >> at org.apache.synapse.transport.passthru.ClientWorker.run(Clien >> tWorker.java:261) >> at org.apache.axis2.transport.base.threads.NativeWorkerPool$1. >> run(NativeWorkerPool.java:172) >> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool >> Executor.java:1145) >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo >> lExecutor.java:615) >> at java.lang.Thread.run(Thread.java:745) >> Caused by: javax.xml.stream.XMLStreamException: Can not output XML >> declaration, after other output has already been done. >> at com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStream >> Writer.java:1522) >> at com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStre >> amWriter.java:1551) >> at com.ctc.wstx.sw.BaseStreamWriter.doWriteStartDocument(BaseSt >> reamWriter.java:650) >> at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStre >> amWriter.java:638) >> at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStre >> amWriter.java:626) >> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeStartDocum >> ent(MTOMXMLStreamWriter.java:277) >> at org.apache.synapse.commons.json.JsonDataSource.serialize(Jso >> nDataSource.java:88) >> at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalS >> erialize(OMSourcedElementImpl.java:691) >> at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChil >> dren(OMSerializerUtil.java:562) >> at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializ >> e(OMElementImpl.java:8
Re: [Dev] [ESB] JSON to SOAP conversion issue
Hi Malinttha, Try with [1] in the proxy instead of "text/xml". [1] - Thanks, On 18 December 2016 at 13:19, Malintha Amarasinghe wrote: > Hi all, > > I am seeing error [1] in ESB 5.0.0 and 4.9.0 while checking SOAP <-> JSON > conversion via a proxy. I have attached the Proxy and the sample backend > API (json) I used. > > When invoke the proxy using the following curl command I can see the error > [1] and client is not getting any response. > > curl http://localhost:8280/services/Soap2JsonProxy -X POST -H > "Content-Type: text/xml" -H 'SOAPAction: "urn:getVersion"' > > But the error goes away if I used following message builder and formatter > for application/json content type. And client gets the converted json to > soap payload successfully. > > class="org.apache.synapse. > commons.json.JsonBuilder"/> > > class="org.apache.synapse. > commons.json.JsonFormatter"/> > > Is this a limitation/bug or am I doing something wrong? > > [1] [2016-12-19 00:34:15,306] ERROR - PassThroughHttpSender Failed to > submit the response > org.apache.axis2.AxisFault: Can not output XML declaration, after other > output has already been done. > at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) > at org.apache.axis2.transport.http.SOAPMessageFormatter. > writeTo(SOAPMessageFormatter.java:78) > at org.apache.synapse.transport.passthru.PassThroughHttpSender. > submitResponse(PassThroughHttpSender.java:555) > 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:554) > at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive( > SynapseCallbackReceiver.java:188) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) > at org.apache.synapse.transport.passthru.ClientWorker.run( > ClientWorker.java:261) > at org.apache.axis2.transport.base.threads.NativeWorkerPool$ > 1.run(NativeWorkerPool.java:172) > at java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1145) > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:745) > Caused by: javax.xml.stream.XMLStreamException: Can not output XML > declaration, after other output has already been done. > at com.ctc.wstx.sw.BaseStreamWriter.throwOutputError( > BaseStreamWriter.java:1522) > at com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure( > BaseStreamWriter.java:1551) > at com.ctc.wstx.sw.BaseStreamWriter.doWriteStartDocument( > BaseStreamWriter.java:650) > at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument( > BaseStreamWriter.java:638) > at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument( > BaseStreamWriter.java:626) > at org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeStartDocument( > MTOMXMLStreamWriter.java:277) > at org.apache.synapse.commons.json.JsonDataSource.serialize( > JsonDataSource.java:88) > at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize( > OMSourcedElementImpl.java:691) > at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren( > OMSerializerUtil.java:562) > at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize( > OMElementImpl.java:875) > at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally( > SOAPEnvelopeImpl.java:283) > at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize( > SOAPEnvelopeImpl.java:245) > at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume( > OMSerializableImpl.java:193) > at org.apache.axis2.transport.http.SOAPMessageFormatter. > writeTo(SOAPMessageFormatter.java:74) > ... 18 more > [2016-12-19 00:34:15,309] ERROR - Axis2Sender Accept:*/*,Content-Type:text/ > xml,Host:localhost:8283,SOAPAction:, encoding='utf-8'?>http://schemas. > xmlsoap.org/soap/envelope/">< > hello>world > Unexpected error sending message back > org.apache.axis2.AxisFault: Failed to submit the response > at org.apache.synapse.transport.passthru.PassThroughHttpSender. > handleException(PassThroughHttpSender.java:613) > at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke( > PassThroughHttpSender.ja
[Dev] [ESB] JSON to SOAP conversion issue
Hi all, I am seeing error [1] in ESB 5.0.0 and 4.9.0 while checking SOAP <-> JSON conversion via a proxy. I have attached the Proxy and the sample backend API (json) I used. When invoke the proxy using the following curl command I can see the error [1] and client is not getting any response. curl http://localhost:8280/services/Soap2JsonProxy -X POST -H "Content-Type: text/xml" -H 'SOAPAction: "urn:getVersion"' But the error goes away if I used following message builder and formatter for application/json content type. And client gets the converted json to soap payload successfully. Is this a limitation/bug or am I doing something wrong? [1] [2016-12-19 00:34:15,306] ERROR - PassThroughHttpSender Failed to submit the response org.apache.axis2.AxisFault: Can not output XML declaration, after other output has already been done. at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78) at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:555) 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:554) at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:188) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:261) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: javax.xml.stream.XMLStreamException: Can not output XML declaration, after other output has already been done. at com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.java:1522) at com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.java:1551) at com.ctc.wstx.sw.BaseStreamWriter.doWriteStartDocument(BaseStreamWriter.java:650) at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStreamWriter.java:638) at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStreamWriter.java:626) at org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeStartDocument(MTOMXMLStreamWriter.java:277) at org.apache.synapse.commons.json.JsonDataSource.serialize(JsonDataSource.java:88) at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:562) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:875) at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283) at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245) at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193) at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74) ... 18 more [2016-12-19 00:34:15,309] ERROR - Axis2Sender Accept:*/*,Content-Type:text/xml,Host:localhost:8283,SOAPAction:,http://schemas.xmlsoap.org/soap/envelope/";>world Unexpected error sending message back org.apache.axis2.AxisFault: Failed to submit the response at org.apache.synapse.transport.passthru.PassThroughHttpSender.handleException(PassThroughHttpSender.java:613) 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.me