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

Reply via email to