ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAP Version Support

Post new topic  Reply to topic
 SOAP Version Support « View previous topic :: View next topic » 
Author Message
pottas
PostPosted: Mon Mar 31, 2008 5:12 am    Post subject: SOAP Version Support Reply with quote

Disciple

Joined: 27 Oct 2005
Posts: 185
Location: South Africa

I am running WMB 6.1.
My question is two-fold:
Question 1:
I designed a flow that has an HTTPInput Node as a Web Service Provider. When you create the flow by dropping 'deployable wsdl'on the canvas it creates the basic flow for you as well as a subflow that extracts the body out of the SOAP message. All good and well so far.
When I put a SOAP 1.1 message through the flow that has the following namespace (http://schemas.xmlsoap.org/soap/envelope/), it works like a charm. But when I put a SOAP 1.2 message (namespace: http://www.w3.org/2003/05/soap-envelope) through the same flow, it abends.
So I suspect the Broker has a problem with SOAP 1.2, but from the documentation it seems like it should support 1.1 as well as 1.2.
I am asking for some direction on this, please?

Question 2:
Also, when I call a service on our host with a SOAP 1.2 message, it abends with the follwing error:
Quote:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:VersionMismatch</faultcode>
<faultstring>SOAP version not supported</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

I did investigate this error, and the description of the error is:
Quote:
The namespace of the SOAP-ENV element indicates that this message is intended for a server implementing a different version of the SOAP protocol; e.g. a SOAP 1.2 message has been sent to a SOAP 1.1 server.

It is quite clear what the error is, my question is - what do I need to change to solve this?
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Mon Mar 31, 2008 5:24 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

I think you need to use a SOAPInput node instead of an HTTPInput node.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
mgk
PostPosted: Mon Mar 31, 2008 8:04 am    Post subject: Reply with quote

Padawan

Joined: 31 Jul 2003
Posts: 1642

What did the message you sent in look like? Can you paste it here (along with the HTTP Headers). Did you make sure the content-type was correct for SOAP-1.2?
_________________
MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions.
Back to top
View user's profile Send private message
pottas
PostPosted: Mon Mar 31, 2008 11:09 pm    Post subject: Reply with quote

Disciple

Joined: 27 Oct 2005
Posts: 185
Location: South Africa

Thanks for the replies, jeff and mgk,
The message I try putting through is something like this:
Quote:
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<soapenv:Header>
<a:Action>http://contracts.it.nednet.co.za/services/customer-services/2007-07-21/Customer/CustLocate</a:Action>
<a:MessageID>urn:uuid:e890e0b7-da37-404f-9c92-a88e64172c7b</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
</soapenv:Header>
<soapenv:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CustLocateRq xmlns="http://contracts.it.nednet.co.za/services/customer-services/2007-07-21/Customer">
<CustomerSearchKey>
<Name></Name>
<CustNo>191169802002</CustNo>
<CustId></CustId>
</CustomerSearchKey>
<PostalCdFilter></PostalCdFilter>
<BirthDateFilter></BirthDateFilter>
<StreetNo></StreetNo>
<CrossCompanyLocate></CrossCompanyLocate>
<AddrUseCdFilter></AddrUseCdFilter>
<ChunkRequestHdr>
<ContinuationValue></ContinuationValue>
<MaxRecords></MaxRecords>
</ChunkRequestHdr>
</CustLocateRq>
</soapenv:Body>
</soapenv:Envelope>


When I use a SOAPInput node, it doesn't even get to the endpoint as defined in the exposed service within Broker.

So I reverted to an HTTPInput Node. Then, when I pass this message to the endpoint, it abends on the SOAPExtract Node with an error:
Quote:
n invalid SOAP message was received in the SOAPExtract node: Customer_2007-07-21_B1.0_CustLocate.Extract


mgk, hopefully this gives you some idea.

The other thing that we did now was to change the Host service to accept this kind of message and if I call the Host using Soap-UI with the above message it works fine.
Now the question is: I used the WSDL version to generate my SOAP flows within Broker. Does the version of the WSDL determine the SOAP message that would be parsed through Broker - in other words do I need a different version of the WSDL definition (possibly version 1.2 or something) to be able to validate the above SOAP 1.2 message? Can I then generate a flow that uses SOAP Input Nodes with success?
Back to top
View user's profile Send private message
mgk
PostPosted: Tue Apr 01, 2008 12:56 am    Post subject: Reply with quote

Padawan

Joined: 31 Jul 2003
Posts: 1642

The SOAPExtract / SOAPEnvelope nodes do not handle SOAP 1.2. However, all the other SOAP nodes do. So if you use a SOAPInput node and drop the WDSL onto the node directly (or edit the generated flow and remove the SOAPExtract node - you can replace it with a RouteToLabel node and set the 'labelPrefix' on the SOAPInout node to 'ws_' to get almost the same behaviour (except that you keep the SOAP Domain Tree)) then the flow will handle the message correctly.
_________________
MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions.
Back to top
View user's profile Send private message
pottas
PostPosted: Tue Apr 01, 2008 4:13 am    Post subject: Reply with quote

Disciple

Joined: 27 Oct 2005
Posts: 185
Location: South Africa

OK, thanks MGK you were spot-on with the SOAPExtract / SOAPEnvelope nodes that doesn't handle SOAP 1.2 messages. So I tried the SOAPInput Nodes, but it had a problem with parsing the message.
Then I tried the HTTPInput nodes, getting rid of all the Envelope and Extract stuff - this seemed to work just fine handling a SOAP 1.2 message.

So my question is this: When do I use SOAPInput Nodes and when do I use HTTPInput Nodes?

...oh, and one of the guys here just told me that the WSDL that we used has a binding for soap 1.1 only. Would this explain the parsing error I get when using SOAPInput Nodes with SOAP 1.2 message?
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Tue Apr 01, 2008 4:16 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

pottas wrote:
..oh, and one of the guys here just told me that the WSDL that we used has a binding for soap 1.1 only. Would this explain the parsing error I get when using SOAPInput Nodes with SOAP 1.2 message?

_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
mgk
PostPosted: Tue Apr 01, 2008 5:35 am    Post subject: Reply with quote

Padawan

Joined: 31 Jul 2003
Posts: 1642

Well if you had posted the error message I could help you more, but this is almost certainly the problem. The SOAPInput node will validate that the SOAP message matches the WSDL that defines it. Therefore, it will expect SOAP1.1 if the WSDL binding is SOAP 1.1.

You can use the HTTP nodes when you don't have WSDL, or your WSDL does not match the messages you are sending for some reason (which is your case here), or you are not using SOAP (as the HTTP nodes allow any type of data to be flowed over HTTP).

Regards,
_________________
MGK
The postings I make on this site are my own and don't necessarily represent IBM's positions, strategies or opinions.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAP Version Support
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.