Author |
Message
|
hdjur |
Posted: Tue Jan 23, 2007 1:35 am Post subject: wsdl 2.0 support in wmb toolkit 6 |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
I am using this version of WMB Toolkit.
Version: 6.0.0.1
Build id: 20060106_1130
Does it support wsdl 2.0? I was provided with wsdl, and when I import it, mxsd's are placed in different namespaces. wsdl.report.txt is like this:
Importing file: C:\Documents and Settings\hradjh\IBM\wmbt6.0\workspace\route_project\BT_1.wsdl
The following is a list of WS-I warning messages found when importing:
WS-I: soap:binding (in soapbind:body elements) refers to part(s) that do not have the "type" attribute., Line: 381, Column: 63
WS-I: A soapbind:body element does not have a namespace attribute, or the namespace attribute
value is not an absolute URI., Line: 381, Column: 63
WS-I: The referred wsdl:part element uses the "element" attribute in an rpc-literal soapbind:body., Line: 381, Column: 63
The WSDL import will proceed with binding BTMain.
Creating wsdl schema document for file:/C:/Documents%20and%20Settings/hradjh/IBM/wmbt6.0/workspace/route_project/BT_1.wsdl.
Processing rpc style for operation executeTrx.
Populating WSDL schema sirius_trans/hr/vestigo/examples/BT_1.mxsd.
Creating file sirius_trans/hr/vestigo/examples/BT_1.mxsd in the workspace.
Creating file sirius_trans/hr/vestigo/examples/BT_1_InlineSchema1.mxsd in the workspace.
Elapsed time processing this message definition file: 0.328 seconds
Number of warnings for this message definition file: 0
Number of files processed: 1
Result is that soapenv11.mxsd is placed in directory sirius_trans\org\xmlsoap\schemas\soap\envelope, that is in the namespace:
/org/xmlsoap/schemas/soap/envelope, while bussines transactions definitions BT_1.mxd and BT_1_InlineSchema1.mxsd
are placed in directory sirius_trans/hr/vestigo/examples, ie namespace /hr/vestigo/examples.
The problem is that bussines transactions are not embedded in the soap envelope.
What's the solution? Downgrade wsdl producer, or upgrade toolkit?
I assume no third solution is reasonable, for example manual intervention on message definitions does not
allow adding bussines messages into soapenv:Body messsage sequence.
Thanks in advance. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Jan 23, 2007 2:56 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Is your Soap Body defined as an xsd:any?
What do you mean "the business transactions are not embedded"?
Does the model validate your messages? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
kimbert |
Posted: Tue Jan 23, 2007 3:17 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Not quite sure I understand the problem yet:
Quote: |
The problem is that business transactions are not embedded in the soap envelope. |
Do you mean that the message model which the importer has created does not list your 'business transactions' under soap:Body? If so, that's the intended behaviour. soap:Body has Composition of 'Message', and can include any message definition in the message set.
Quote: |
I assume no third solution is reasonable, for example manual intervention on message definitions does not
allow adding bussines messages into soapenv:Body messsage sequence. |
Not sure whether that was a statement or a question You can do whatever you like to the message model - as long as you know what you're doing.
Have you actually tried processing messages using this message set? If so, what was the result? |
|
Back to top |
|
 |
hdjur |
Posted: Tue Jan 23, 2007 4:48 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Hi!
It was a question. I am not able to include any message definition in the message set, using toolkit, because even if I change "Content validation" to "Open", there are only offered types defined in soapenv11.mxsd, ie soapenv:Envelope,soapenv:Header,soapenv:Body,soapenv:Fault.
And I can't add new types in that combo box which is displayed when I say "Add message". Or can I?
Soap Body is defined as "soapenv:Body" from this namespace:
http://schemas.xmlsoap.org/soap/envelope/
I have tried to use it, the result is that I can't map input MQ message to soapenv:Envelope, in a mapping node, I can only map it to the BT (bussines trans.) messages, and I have to add soap header in a subsequent compute node, and I'm not happy with that. Because, soapenvelope does not contain (wrap) BT. At least not immediately after wsdl import.
Messages are validated on input. There is a MRM parser on MQInput node, there is a TDS with fixed length data separation message set, and an "outerMessage" multipart message definition. Messages are properly parsed, but when I want to map them to a soap request, there is an issue which I have described. |
|
Back to top |
|
 |
hdjur |
Posted: Tue Jan 23, 2007 4:57 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
I said : "Because, soapenvelope does not contain (wrap) BT. At least not immediately after wsdl import. " , and you said it was an intended behaviour. So the procedure is always to add messages to the soap envelope afterwards? The question remains why BT messages are not offered in "Add message" combo box? |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Jan 23, 2007 5:07 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Does the message definition file for the BT messages contain any "Message" elements? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
hdjur |
Posted: Tue Jan 23, 2007 5:16 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
|
Back to top |
|
 |
hdjur |
Posted: Tue Jan 23, 2007 5:50 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
These are those that I want to add to the soapenv:Body. Shall I post something of it? |
|
Back to top |
|
 |
kimbert |
Posted: Wed Jan 24, 2007 1:55 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Hi hdjur,
I checked with my colleagues. WMB 6.0 does not support WSDL 2.0.
I'll ask around and see whether they can suggest any workarounds for you. |
|
Back to top |
|
 |
hdjur |
Posted: Wed Jan 24, 2007 2:47 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Thank you, it would be very helpfull. Can you just confirm please, do I understand the concept well?
You said that it is an intended behaviour to receive "broken" definition after wsdl import, and do the message adding manually (bussiness messages to soap envelope). Wouldn't it be natural to expect the opposite?
I want to map outerMessage (you remember it from our previous discussion) to the soapenvelope. Both of them are (should be) wrappers, containing messages of particular bussiness types. I expect to do that only in a mapping node, before I proceed to http request node. I don't expect to have to add compute node or SOAPEnvelope in between.
Which I do now, because, I can only map "BT" directly, not through the soapenvelope wrapper. |
|
Back to top |
|
 |
kimbert |
Posted: Wed Jan 24, 2007 3:21 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
You said that it is an intended behaviour to receive "broken" definition after wsdl import |
Not sure I used exactly those words . The importer should leave you with a useful set of message definitions. If that is not the case, we need to address the issue.
'Intended' was the wrong word. My statement was relating to the runtime parser, not the tooling. The MRM parser does not care whether a structure with composition of 'Message' has any child messages defined. In the Mapping node, it does matter.
I'll get back to you on the other issues... |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Jan 24, 2007 3:35 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Update the Toolkit/Broker to the latest fix pack. It has automatic soap wrap and unwrap nodes...
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
hdjur |
Posted: Wed Jan 24, 2007 4:54 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
fjb_saper wrote: |
Update the Toolkit/Broker to the latest fix pack. It has automatic soap wrap and unwrap nodes...
Enjoy  |
I did it. These are officially called SOAPEnvelope and SOAPExtract nodes, installed through IA90 support pack (I didn't notice them after latest fix pack installation). Still, it's not an answer to my objection. I meant to say:
I don't expect to have to add compute node or SOAPEnvelope node in between. |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Jan 24, 2007 4:36 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
You don't HAVE to. You can use an xmlt transform node...
But if you want to take advantage of the many features of the broker, you either stick a compute node in between and do the transform there or you unwrap and wrap and use a mapping node...
It's up to you...
 _________________ MQ & Broker admin |
|
Back to top |
|
 |
hdjur |
Posted: Sun Jan 28, 2007 3:12 pm Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
I don't have xml data as input. That's why I thought mapping node would be more natural choice, in fact, I didn't consider xmlt transform node as an option at all. Maybe I was wrong. Anyway, now I have xml formated data on the output of the mapping node, trying to wrap it into the soap envelope. I don't know how to fill the envelope into LocalEnvironment, automaticaly using soapenv11.mxsd. I have set Compute Mode of compute node to "All", to prepare environment for the SOAPEnvelope node. Do I have to code envelope mannualy in ESQL, like this:
set OutputLocalEnvironment.SOAP.Envelope=...?
Or do I have to put there only a path to soapenv11.mxsd?
I'm receiving this:
Jan 28 23:10:55 hrambtest user:err|error WebSphere Broker v6003[823446]: (WBRK.default)[5673]BIP2230E: Error detected whilst processing a message in node 'token_flow.SOAPEnvelope'. : WBRK.f9cdf9a0-0f01-0000-0080-929af9708d91: /build/S600_P/src/DataFlowEngine/PluginInterface/ImbJniNode.cpp: 926: ImbJniNode::evaluate: ComIbmJniNode: token_flow#FCMComposite_1_8
Jan 28 23:10:55 hrambtest user:err|error WebSphere Broker v6003[823446]: (WBRK.default)[5673]BIP4367E: The method 'evaluate' in Java node 'SOAPEnvelope' has thrown the following exception: java.lang.RuntimeException: The location identified by the XPath expression "$LocalEnvironment/SOAP/Envelope" does not exist. : WBRK.f9cdf9a0-0f01-0000-0080-929af9708d91: /build/S600_P/src/DataFlowEngine/PluginInterface/com_ibm_broker_plugin_CMbService.cpp: 1631: ImbJavaExceptionUtils::throwableToNativeException: :
Jan 28 23:10:55 hrambtest user:err|error WebSphere Broker v6003[823446]: (WBRK.default)[5673]BIP4395E: Java exception: 'java.lang.RuntimeException'; thrown from class name: 'com.ibm.broker.soap.SoapWrapperNode', method name: 'assembleSOAPMessage', file: 'SoapWrapperNode.java', line: '162' : WBRK.f9cdf9a0-0f01-0000-0080-929af9708d91: /build/S600_P/src/DataFlowEngine/PluginInterface/com_ibm_broker_plugin_CMbService.cpp: 1649: ImbJavaExceptionUtils::throwableToNativeException: :
Jan 28 23:10:56 hrambtest user:err|error WebSphere Broker v6003[823446]: (WBRK.default)[5673]BIP2648E: Message backed out to a queue; node 'token_flow.MQInput'. : WBRK.f9cdf9a0-0f01-0000-0080-929af9708d91: /build/S600_P/src/DataFlowEngine/ImbMqInputNode.cpp: 1859: ImbCommonInputNode::eligibleForBackout: ComIbmMQInputNode: token_flow#FCMComposite_1_4
Can someone please provide a link to an example/documentation on how to set SOAPEnvelope node to work. Thanks. |
|
Back to top |
|
 |
|