I've had success with the following:
<http:endpoint service="ns:service" endpoint="endpoint"
role="provider" soap="true" locationURI="http://xxxxxx"
defaultMep="http://www.w3.org/2004/08/wsdl/in-out" soapVersion="1.1"
wsdlResource="classpath:wsdl/xxxx.wsdl"/>
You can also completely bypass the definition of the endpoint in the xbean and
set the address directly on the endpoint via a BPEL assign. The following
worked for me as well:
<wsa:EndpointReference>
<wsa:Address>http://example.com/services/MyService?http.soap=true&http.soapVersion=1.1</wsa:Address>
</wsa:EndpointReference>
Just watch your whitespace or you'll run into SM-1835.
Also, I have all of my SOAP traffic going through a tcpMon proxy so I can see
what it looks like. This is very helpful in tracking down little things like
this.
On 6/3/09 12:16 PM, "Ian Harrigan" <[email protected]> wrote:
Unfortunately i get the exact same exception:
java.io.IOException: An existing connection was forcibly closed by the
remote host
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:25)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:206)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:207)
at org.mortbay.io.nio.ChannelEndPoint.fill(ChannelEndPoint.java:131)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:283)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:377)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:451)
My xbean endpoint looks like:
<http:soap-provider service="echo:EchoService"
endpoint="EchoServiceSOAP11port_http"
locationURI="http://localhost:8080/axis2/services/EchoService"
wsdl="classpath:EchoService.wsdl" />
--------------------------------------------------
From: "Guillaume Nodet" <[email protected]>
Sent: Wednesday, June 03, 2009 5:14 PM
To: <[email protected]>
Subject: Re: Really need help with soap namespace mismatch
> Yes, sorry, i meant <http:soap-provider/>
>
> On Wed, Jun 3, 2009 at 18:05, Ian Harrigan <[email protected]>
> wrote:
>> Would i not need it to be a provider? I cant still try with the new ones,
>> but im just checking to make sure im not misunderstanding something quite
>> basic.
>>
>> The external service i want to call is on an axis2/tomcat installation.
>> Im
>> aiming to call this from a BPEL process deployed inside service mix, so
>> am i
>> right in think it should be a provider rather than a consumer?
>>
>> Ill try both regardless i just want to make sure iv not been barking up
>> the
>> wrong tree..
>>
>> Cheers,
>> Ian
>>
>> --------------------------------------------------
>> From: "Guillaume Nodet" <[email protected]>
>> Sent: Wednesday, June 03, 2009 4:54 PM
>> To: "Apache ServiceMix Users" <[email protected]>
>> Subject: Re: Really need help with soap namespace mismatch
>>
>>> Have you tried using the <http:soap-consumer/> endpoint instead ?
>>> See http://servicemix.apache.org/servicemix-http-new-endpoints.html
>>>
>>> On Wed, Jun 3, 2009 at 17:44, Ian Harrigan <[email protected]>
>>> wrote:
>>>>
>>>> To follow up - i just tried to expose my endpoint via an xbean as
>>>> follows:
>>>>
>>>> <http:endpoint service="echo:EchoService"
>>>> endpoint="EchoServiceSOAP11port_http"
>>>> role="provider"
>>>>
>>>> locationURI="http://localhost:8080/axis2/services/EchoService"
>>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
>>>> soapVersion ="1.1"/>
>>>>
>>>> But now i get the exception:
>>>>
>>>> java.io.IOException: An existing connection was forcibly closed by the
>>>> remote host
>>>> at sun.nio.ch.SocketDispatcher.read0(Native Method)
>>>> at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:25)
>>>> at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
>>>> at sun.nio.ch.IOUtil.read(IOUtil.java:206)
>>>> at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:207)
>>>> at
>>>> org.mortbay.io.nio.ChannelEndPoint.fill(ChannelEndPoint.java:131)
>>>> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:283)
>>>> at
>>>> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
>>>> at
>>>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:377)
>>>> at
>>>>
>>>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
>>>> at
>>>>
>>>> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:451)
>>>>
>>>> The server (axis2/tomcat) is definitely running though!
>>>>
>>>> Ian
>>>>
>>>> --------------------------------------------------
>>>> From: "Ian Harrigan" <[email protected]>
>>>> Sent: Wednesday, June 03, 2009 4:21 PM
>>>> To: "Apache ServiceMix Dev" <[email protected]>; "Apache
>>>> ServiceMix
>>>> Users" <[email protected]>
>>>> Subject: Really need help with soap namespace mismatch
>>>>
>>>>> Hi All,
>>>>>
>>>>> Im trying to invoke an axis2 web service deployed inside tomcat, heres
>>>>> the
>>>>> basic definition of it:
>>>>>
>>>>> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>>>>> ....
>>>>> <wsdl:binding name="EchoServiceSOAP11Binding"
>>>>> type="ns0:EchoServicePortType">
>>>>> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
>>>>> style="document"/>
>>>>> <wsdl:operation name="echo">
>>>>> <soap:operation soapAction="urn:echo" style="document"/>
>>>>> <wsdl:input>
>>>>>
>>>>> <soap:body use="literal"/>
>>>>> </wsdl:input>
>>>>> <wsdl:output>
>>>>> <soap:body use="literal"/>
>>>>> </wsdl:output>
>>>>> </wsdl:operation>
>>>>>
>>>>> </wsdl:binding>
>>>>> ....
>>>>> ....
>>>>> <wsdl:port name="EchoServiceSOAP11port_http"
>>>>> binding="ns0:EchoServiceSOAP11Binding">
>>>>> <soap:address
>>>>> location="http://localhost:8080/axis2/services/EchoService"/>
>>>>> <smix:endpoint role="provider" defaultMep="in-out"/>
>>>>> </wsdl:port>
>>>>>
>>>>> I would have though that this would mean that service mix would have
>>>>> to
>>>>> use SOAP1.1 to invoke it (because of the 'soap' namespace), however,
>>>>> when i
>>>>> try to invoke it service mix shows the soap request as having a
>>>>> namespace of
>>>>> http://www.w3.org/2003/05/soap-envelope which is SOAP 1.2, i then get
>>>>> the
>>>>> error from tomcat/axis2 saying there is a mismatch, ie, im trying to
>>>>> send a
>>>>> soap1.2 request to a soap1.1 port/binding.
>>>>>
>>>>> Can anyone help me with this??? I reall dont see what else i can try.
>>>>>
>>>>> Thanks,
>>>>> Ian
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Cheers,
>>> Guillaume Nodet
>>> ------------------------
>>> Blog: http://gnodet.blogspot.com/
>>> ------------------------
>>> Open Source SOA
>>> http://fusesource.com
>>>
>>
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
>
--
Mark Ford
MIT Lincoln Laboratory
244 Wood Street
Lexington MA 02420
(781) 981-1843