Replacing the old http provider endpoint (soap=true) with the new soap-provider 
causing a malformed request followed by "SOAPAction header is missing" error
------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: SM-1787
                 URL: https://issues.apache.org/activemq/browse/SM-1787
             Project: ServiceMix
          Issue Type: Bug
          Components: servicemix-http
         Environment: OS: winXP, server: Tomcat, Servicemix: 3.3.1.3, IDE: 
eclipce, Java: 5.
            Reporter: Liav Ezer


I deployed 3 SA: soap-consumer, camle SE & an old SMX http provider with 
soap=true attribute.
My scenario is simple & working under this constelation: 

A client aaplication send a soap request to the listing soap-consumer (with my 
own marshaler).
The consumer relay it to the Camel Router Builder. In the Camel i process (via 
my own processor) the request & relay it (via producerTemplet) to the old http 
provider. 
The provider send the soap request to a deplyed server application (under 
Tomcat) & return with a response.
The response is sent back all the way to the client application.

The Problem:

I want to upgrade my provider to the new soap-provider. When doing so i get a 
soap fault message indicating that i have "No soapAction header!" 
(<faultstring>no SOAPAction header!</faultstring>) & i can clearly see (with a 
wireshark sniffer) that indeed the request is malformed compare to the one sent 
with the old provider endpoint. You can't see the soap envelope nither its body 
in it.

Here is the old provider request (taken from a sniffer):

[\O72HiP/fPOST /ForecasterService/services/ForecastWeatherImp HTTP/1.1
User-Agent: Axis/1.4
SOAPAction: ""
Pragma: no-cache
REQUEST_METHOD: POST
Cache-Control: no-cache
CONTENT_TYPE: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*

REQUEST_URI: http://localhost:8192/abc/services/internal/forecastWeather/
Content-Type: text/xml;charset=UTF-8
Content-Length: 419
Host: drorav02:8080
<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/";>
 <env:Body>
  <getForcastPerLocation xmlns="http://service.app.esb.abc.liav.com"; 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
    <location>NYC</location>
  </getForcastPerLocation>
 </env:Body>
</env:Envelope>

The old provider xbean:

<http:endpoint service="prd:ForecastWeatherImpService"
                 endpoint="prd:ForecastWeatherImp"
                 role="provider" 
                 
locationURI="http://drorav02:8080/ForecasterService/services/ForecastWeatherImp";
                 wsdlResource="classpath:ForecastWeatherImp.wsdl"
                 defaultMep="http://www.w3.org/2004/08/wsdl/in-out"; 
                 soap="true"
                 soapVersion="1.1"/>

Here is the new provider soap request (taken from the same sniffer):

[WP,POST /ForecasterService/services/ForecastWeatherImp HTTP/1.1
Content-Type: text/xml
Host: drorav02:8080
Content-Length: 438

The new provider xbean:

<http:soap-provider service="prd:ForecastWeatherImpService"
               endpoint="ForecastWeatherImp"
               
locationURI="http://drorav02:8080/ForecasterService/services/ForecastWeatherImp";
 
               wsdl="classpath:ForecastWeatherImp.wsdl"
               useJbiWrapper="false"
               validateWsdl="false"/>

Just in case, here is the soap-consumer xbean:

<http:soap-consumer service="con:ForecastWeatherImpService"
                 endpoint="ForecastWeatherImp"  
                 
locationURI="http://localhost:8192/abc/services/internal/forecastWeather?in-out";
                 defaultMep="http://www.w3.org/2004/08/wsdl/in-out";
                 targetService="abc:abcInternalService"
                 useJbiWrapper="false"
                 marshaler="#abcGenericMarshaler" 
                 wsdl="classpath:PublicForecastWeather.wsdl" /> 
     <bean id="abcGenericMarshaler" 
class="org.apache.servicemix.jbi.HTTPSOAPMarshaler"/>

Thanks in advance.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to