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.