elias
elias

Reputation: 15510

WSO2 ESB: AxisFault: no protocol

I'm having a problem with the following proxy in WSO2 ESB 4.6.0:

<proxy name="GetCapacity" transports="http https" startOnLoad="true" trace="disable">
  <target>
     <inSequence>
        <xslt key="conf:ManageWorkforce/xslt/GetCapacity_Request.xsl"/>
        <send>
           <endpoint key="Capacity"/>
        </send>
     </inSequence>
     <outSequence>
        <filter xpath="get-property('FAULT')">
           <then>
              <log level="full" separator=",">
                 <property name="trace" value="-------- FAULT ---------"/>
              </log>
              <xslt key="conf:ManageWorkforce/xslt/SoapFaultToStandardHeader.xsl"/>
              <header name="To" expression="get-property('ReplyTo')"/>
           </then>
           <else>
              <xslt key="conf:ManageWorkforce/xslt/GetCapacity_Response.xsl"/>
           </else>
        </filter>
        <send/>
     </outSequence>
     <faultSequence>
        <log level="full" separator=",">
           <property name="trace" value="-------- FAULT SEQUENCE -------"/>
        </log>
        <property name="RESPONSE" value="true"/>
        <header name="To" expression="get-property('ReplyTo')"/>
     </faultSequence>
  </target>
</proxy>

When I call it with soapUI and the Service throws a SoapFault (the FAULT property is TRUE), the following error occurs in WSO2:

[2014-01-20 19:13:30,764] ERROR - Axis2Sender Unexpected error sending message back
org.apache.axis2.AxisFault: no protocol: 
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:453)
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:277)
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
    at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:161)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:282)
    at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:92)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:230)
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:443)
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:166)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:238)
    at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:167)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
    at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:456)
    at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:57)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:316)
    at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:329)
    at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:59)
    at org.apache.synapse.endpoints.IndirectEndpoint.send(IndirectEndpoint.java:54)
    at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:95)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114)
    at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:154)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:434)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:219)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.MalformedURLException: no protocol: 
    at java.net.URL.<init>(URL.java:567)
    at java.net.URL.<init>(URL.java:464)
    at java.net.URL.<init>(URL.java:413)
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:422)
    ... 31 more

What I'm doing wrong?

Upvotes: 1

Views: 1377

Answers (1)

Asela
Asela

Reputation: 5821

According to the error it seems to be that the "To" header is incorrect. Could you please try to remove the "To" header and see. In your configuration "To" header has been add using "ReplyTo" property. Therefore Please add following in to your fault sequence

<header name="To" action="remove"/>

Also, It is better to enable the debug logs, to troubleshoot the issues. This would show you messages in the wire. Please enable following two properties from log4j.properties file which can be found at /repository/conf directory.

log4j.logger.org.apache.synapse.transport.nhttp.wire=DEBUG log4j.logger.org.apache.synapse.transport.nhttp.headers=DEBUG

Add more in the answer, You have copied "To" header from the "ReplyTo". You can log the value of the "ReplyTo" as following to check whether it is actually incorrect.

<log level="custom"><property name="RelyTo" expression="get-property('ReplyTo')"/></log>

Upvotes: 1

Related Questions