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. <messageBuilder contentType="application/json" class="org.apache.synapse.commons.json.JsonBuilder"/> <messageFormatter contentType="application/json" 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:,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><jsonObject><hello>world</hello></jsonObject></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: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.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: 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) ... 16 more 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,315] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:51caa894-6154-4e5d-9440-26c3488788bf, Direction: response, MESSAGE = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = Accept:*/*,Content-Type:text/xml,Host:localhost:8283,SOAPAction:,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><jsonObject><hello>world</hello></jsonObject></soapenv:Body></soapenv:Envelope> Unexpected error sending message back, Payload: { "hello" : "world" } Thanks! Malintha -- Malintha Amarasinghe Software Engineer *WSO2, Inc. - lean | enterprise | middleware* http://wso2.com/ Mobile : +94 712383306
<?xml version="1.0" encoding="UTF-8"?> <proxy xmlns="http://ws.apache.org/ns/synapse" name="Soap2JsonProxy" transports="https http" startOnLoad="true"> <description/> <target> <inSequence> <property name="messageType" value="application/json" scope="axis2" type="STRING"/> <send> <endpoint> <http uri-template="http://localhost:8280/api1/1.0.0" method="GET"/> </endpoint> </send> </inSequence> <outSequence> <property name="messageType" value="text/xml" scope="axis2" type="STRING"/> <send/> </outSequence> </target> <publishWSDL> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://version.services.core.carbon.wso2.org" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://version.services.core.carbon.wso2.org"> <wsdl:documentation>Version</wsdl:documentation> <wsdl:types> <xs:schema attributeFormDefault="qualified" elementFormDefault="unqualified" targetNamespace="http://version.services.core.carbon.wso2.org"> <xs:element name="VersionException"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="VersionException" nillable="true" type="ns:Exception"/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="Exception"> <xs:sequence> <xs:element minOccurs="0" name="Message" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="getVersion"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> <xs:element name="getVersionResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="getVersionRequest"> <wsdl:part name="parameters" element="ns:getVersion"/> </wsdl:message> <wsdl:message name="getVersionResponse"> <wsdl:part name="parameters" element="ns:getVersionResponse"/> </wsdl:message> <wsdl:message name="VersionException"> <wsdl:part name="parameters" element="ns:VersionException"/> </wsdl:message> <wsdl:portType name="VersionPortType"> <wsdl:operation name="getVersion"> <wsdl:input message="ns:getVersionRequest" wsaw:Action="urn:getVersion"/> <wsdl:output message="ns:getVersionResponse" wsaw:Action="urn:getVersionResponse"/> <wsdl:fault message="ns:VersionException" name="VersionException" wsaw:Action="urn:getVersionVersionException"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="VersionSoap11Binding" type="ns:VersionPortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="getVersion"> <soap:operation soapAction="urn:getVersion" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="VersionException"> <soap:fault use="literal" name="VersionException"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:binding name="VersionSoap12Binding" type="ns:VersionPortType"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="getVersion"> <soap12:operation soapAction="urn:getVersion" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="VersionException"> <soap12:fault use="literal" name="VersionException"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:binding name="VersionHttpBinding" type="ns:VersionPortType"> <http:binding verb="POST"/> <wsdl:operation name="getVersion"> <http:operation location="getVersion"/> <wsdl:input> <mime:content type="text/xml" part="parameters"/> </wsdl:input> <wsdl:output> <mime:content type="text/xml" part="parameters"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="Version"> <wsdl:port name="VersionHttpSoap11Endpoint" binding="ns:VersionSoap11Binding"> <soap:address location="http://malintha-t540p:8283/services/Version.VersionHttpSoap11Endpoint"/> </wsdl:port> <wsdl:port name="VersionHttpsSoap11Endpoint" binding="ns:VersionSoap11Binding"> <soap:address location="https://malintha-t540p:8246/services/Version.VersionHttpsSoap11Endpoint"/> </wsdl:port> <wsdl:port name="VersionHttpSoap12Endpoint" binding="ns:VersionSoap12Binding"> <soap12:address location="http://malintha-t540p:8283/services/Version.VersionHttpSoap12Endpoint"/> </wsdl:port> <wsdl:port name="VersionHttpsSoap12Endpoint" binding="ns:VersionSoap12Binding"> <soap12:address location="https://malintha-t540p:8246/services/Version.VersionHttpsSoap12Endpoint"/> </wsdl:port> <wsdl:port name="VersionHttpEndpoint" binding="ns:VersionHttpBinding"> <http:address location="http://malintha-t540p:8283/services/Version.VersionHttpEndpoint"/> </wsdl:port> <wsdl:port name="VersionHttpsEndpoint" binding="ns:VersionHttpBinding"> <http:address location="https://malintha-t540p:8246/services/Version.VersionHttpsEndpoint"/> </wsdl:port> </wsdl:service> </wsdl:definitions> </publishWSDL> </proxy>
<?xml version="1.0" encoding="UTF-8"?> <api xmlns="http://ws.apache.org/ns/synapse" name="api-1" context="/api1/1.0.0" version="1.0.0" version-type="context"> <resource methods="DELETE POST GET" url-mapping="/*" faultSequence="fault"> <inSequence> <property name="NO_ENTITY_BODY" action="remove" scope="axis2"/> <payloadFactory media-type="json"> <format> { "hello" : "world" } </format> </payloadFactory> <respond/> </inSequence> <outSequence/> </resource> <handlers/> </api>
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
