Author |
Message
|
jayZ |
Posted: Tue Mar 13, 2012 7:26 am Post subject: Consuming Messages from WCF Client in WMB7 |
|
|
Acolyte
Joined: 03 Jun 2008 Posts: 71
|
I am attempting to write a message flow that would consume a message from a .Net application, using the customer WCF - MQ channel. Since .Net is using SOAP/JMS under the covers, I am getting a SOAP message to the input node. In order to process this message, I am attempting to use the SOAPInput node with JMS as the transport, but keep getting: The SOAPJMS_contentType property was not present in the inbound message. Is this an issue with the client or is WMB 7 even able to parse these messages with the built in SOAP nodes? |
|
Back to top |
|
 |
Vitor |
Posted: Tue Mar 13, 2012 7:33 am Post subject: Re: Consuming Messages from WCF Client in WMB7 |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
jayZ wrote: |
In order to process this message, I am attempting to use the SOAPInput node with JMS as the transport, but keep getting: The SOAPJMS_contentType property was not present in the inbound message. |
Getting where? When you're configuring the node or when a message arrives? If the latter, is the message being rolled back onto the queue (backout count increasing)?
jayZ wrote: |
Is this an issue with the client or is WMB 7 even able to parse these messages with the built in SOAP nodes? |
My first move would be to stop the flow, get the app to send a message and manually examine it to see if the contentType property is present or not. That's going to pin down the problem area.
My first thought is that the clients not supplying it because WMBv7 should be able to do this, but not really my comfort area.
As always, a user trace may give you more details on exactly when the wheels fell off. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
jayZ |
Posted: Tue Mar 13, 2012 7:40 am Post subject: |
|
|
Acolyte
Joined: 03 Jun 2008 Posts: 71
|
Thanks, Vitor! Here is the output from the RFH header:
------Content Type -------
<contentType>text/xml; charset=utf-8</contentType>
------RFH Header --------
StrucId : 'RFH ' Version : 2 StrucLength : 796 Encoding : 546
CodedCharSetId : 1208 Format : ' ' Flags : 0 NameValueCCSID : 1208
NameValueLen : 32
NameValueData : '<mcd><Msd>jms_bytes</Msd></mcd> '
NameValueLen : 172
NameValueData : '<jms><Dst>queue://[Queue Manager]/SampleQ?expiry=0&priority=0&persistence=-1</
Dst><Rto>queue:///SampleReplyQ</Rto><Tms>[Data]</Tms><Pri>0</Pri><Dlv>1</
Dlv></jms> '
NameValueLen : 544
NameValueData : '<usr><transportVersion>1</transportVersion><soapAction>http://schemas.adesa.com/
IH/Transmissions/TransmisionRequest/MessageTransferService/ExecuteTransmission</
soapAction><contentType>text/xml; charset=utf-8</contentType><targetService></ta
rgetService><endpointURL>jms:/queue?destination=SampleQ@[Queue Manager]&connection
Factory=binding(client)connectQueueManager([Queue Manager Name])clientConnection(d-corp-int
mq-01([Port]))clientChannel([CHANNEL])&initialContextFactory=com.ibm.mq.j
ms.Nojndi&replyDestination=SampleReplyQ</endpointURL></usr> ' |
|
Back to top |
|
 |
Vitor |
Posted: Tue Mar 13, 2012 7:49 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
Ok, moving even further outside my area here, but I would have expected contentType to be in the <jms> area rather than the <usr> one; possibly my expectation is wrong.
I'm also surprised to see a SOAP message described as jms_Bytes rather than jms_Text. Falling off the edge of my comfort zone and into the dark pit of WCF of which I know next to nothing, I'd enquire with the application if they're certain it's all well their end.
I'd also be inclined to construct a test SOAP/JMS message with SoapUI or similar, feed that to the flow & see what happens.
I'd also run a user trace. More for Pavlovian reasons (see WMB issue, run WMB user trace) but it might throw a clue up. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
jayZ |
Posted: Tue Mar 13, 2012 7:53 am Post subject: |
|
|
Acolyte
Joined: 03 Jun 2008 Posts: 71
|
We're definitely in the same boat with regards to the WCF side. I also noticed the jms_bytes type, but the .Net guys seem to think that this is all happening under the covers. This is definitely a scary middle area, where its not quite .Net, not quite broker. From their perspective, the message is getting to the queue; so, they don't see an issue on their end.
Thanks for your help.
JZ |
|
Back to top |
|
 |
Vitor |
Posted: Tue Mar 13, 2012 8:16 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
jayZ wrote: |
From their perspective, the message is getting to the queue; so, they don't see an issue on their end. |
I can offer only this conversation I had with a .NET developer a few months ago, when I was getting problems due to an XML message not matching the schema I'd been provided with:
"This XML isn't valid; I need the schema you're using or some clue what I'm supposed to do when this integer value contains 'N/A'"
"It's an optional tag; don't process it if it's not an integer"
"If it's optional, why are you sending it when there's no value?"
"There's nothing wrong with the message we're sending. It looks fine in MQExplorer"
"If it was a random stream of bytes would you think it was your problem?"
"Yeah, sure"
"If it wasn't well formed XML would you think it was your problem?"
"Yeah, but..."
"So this is your problem. Send me the schema you're using to form the XML" _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mgk |
Posted: Tue Mar 13, 2012 8:28 am Post subject: |
|
|
 Padawan
Joined: 31 Jul 2003 Posts: 1642
|
Quote: |
The SOAPJMS_contentType property was not present in the inbound message. |
This error occurs because the MQ-WCF channel only supports an older (IBM) version of SOAP/JMS. By default the SOAPInput node requires that the message have the properties expected by the SOAP/JMS standard (on W3C). For example, W3C style expects "SOAPJMS_contentType" but the IBM style expects "contentType" in teh message properties.
Therefore you have to flip the SOAPInput node into "IBM" mode from "W3C" mode. The way to do this is to configure the SOAPInput node with a WSDL that has an IBM style SOAP/JMS binding. Then everything should spring to life .
This is explained a little in the info center here:
http://publib.boulder.ibm.com/infocenter/wmbhelp/v8r0m0/topic/com.ibm.etools.mft.doc/bc19000_.htm
I hope this helps,
Kind 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 |
|
 |
Vitor |
Posted: Tue Mar 13, 2012 8:47 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mgk wrote: |
I hope this helps, |
I'm enlightened and offer you thanks!  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Tue Mar 13, 2012 8:50 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
|
Back to top |
|
 |
Vitor |
Posted: Tue Mar 13, 2012 8:54 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
lancelotlinc wrote: |
Thanks also!! Lets go for Fish & Chips and a pint or two. I'm buying.... |
You know a Fish & Chip place in Bloomington? Or within 50 miles? With decent beer?
I once found a decent seafood place in Peoria.
Of course if by "I'm buying" you mean to go to the UK, I can offer you any number of suggestions... _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mgk |
Posted: Tue Mar 13, 2012 8:56 am Post subject: |
|
|
 Padawan
Joined: 31 Jul 2003 Posts: 1642
|
Quote: |
Lets go for Fish & Chips and a pint or two. I'm buying |
Sounds good. Maybe I will have the chance to take you up on that kind offer at IMPACT this year  _________________ 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 |
|
 |
lancelotlinc |
Posted: Tue Mar 13, 2012 9:01 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
Alas, my Impact opportunity evaporated. The company sent twelve people to the Java One conference and figured out they over-spent the budget. The Impact conference will have to wait for me until next year.
This year, I'm going back to Cebu, Philippines for vaca. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
Vitor |
Posted: Tue Mar 13, 2012 9:04 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mgk wrote: |
Maybe I will have the chance to take you up on that kind offer at IMPACT this year  |
If I make it to IMPACT (still 50/50 on the politics) we can try and find good beer at least.
(There are no decent fish & chips in Las Vegas. Harsh thing to say, but true. Doesn't make it a bad place, just a place without fish & chips. Like most of this country.... ) _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Mar 13, 2012 9:00 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
jayZ wrote: |
We're definitely in the same boat with regards to the WCF side. I also noticed the jms_bytes type, but the .Net guys seem to think that this is all happening under the covers. This is definitely a scary middle area, where its not quite .Net, not quite broker. From their perspective, the message is getting to the queue; so, they don't see an issue on their end.
Thanks for your help.
JZ |
And sorry to say rightly so. You will also have to be able to handle non XML stuff like attachments and thus it forces the message to a bytes message...  _________________ MQ & Broker admin |
|
Back to top |
|
 |
jayZ |
Posted: Fri Mar 16, 2012 5:48 am Post subject: |
|
|
Acolyte
Joined: 03 Jun 2008 Posts: 71
|
Thanks for all the great feedback guys. I think I'm close to getting there, but not quite 100%. The .Net guys exposed a WSDL, which I then pulled down into a message set; but, there is no JMS binding inside the WSDL. Instead, I have:
<wsdl:port binding="tns:NetNamedPipeBinding_ITransmissionJobService" name="NetNamedPipeBinding_ITransmissionJobService">
<soap12:address location="net.pipe://[host]/TransmissionJobService"/>
<wsa10:EndpointReference>
<wsa10:Address>net.pipe://[host]/TransmissionJobService</wsa10:Address>
<Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
<Spn>host/[host]</Spn>
</Identity>
</wsa10:EndpointReference>
</wsdl:port>
<wsdl:port binding="tns:BasicHttpBinding_ITransmissionJobService" name="BasicHttpBinding_ITransmissionJobService">
<soap:address location="http://[host:port]/TransmissionJobService"/>
</wsdl:port>
When I create the WSDL using the wizard/provided xsd, messages just hang out in the queue.
How should this work? Should I be creating a WSDL or do they need to modify their service to include a jms binding? |
|
Back to top |
|
 |
|