You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by "Liav Ezer (JIRA)" <ji...@apache.org> on 2009/02/08 17:37:04 UTC

[jira] Assigned: (SM-1787) Replacing the old http provider endpoint (soap=true) with the new soap-provider causing a malformed request followed by "SOAPAction header is missing" error

     [ https://issues.apache.org/activemq/browse/SM-1787?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Liav Ezer reassigned SM-1787:
-----------------------------

    Assignee: Guillaume Nodet

> 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
>            Assignee: Guillaume Nodet
>         Attachments: 2_JIRA.zip
>
>
> 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"/>
> Attached are the relevent SA's (zipped).
> Thanks in advance.

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