|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
wsdl 2.0 support in wmb toolkit 6 |
« View previous topic :: View next topic » |
Author |
Message
|
pathipati |
Posted: Sun Jan 28, 2007 4:49 pm Post subject: |
|
|
Master
Joined: 03 Mar 2006 Posts: 296
|
|
Back to top |
|
 |
hdjur |
Posted: Sun Jan 28, 2007 11:42 pm Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
|
Back to top |
|
 |
hdjur |
Posted: Mon Jan 29, 2007 2:26 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
I used that example code, so that I built envelope in LocalEnvironment tree (from Figure 4-31 ESQL for the Compute node (1) ), and then I tried to use that envelope to wrap body, which is created in mapping node, and contained in the Root tree. I still have a problem with configuring SOAPEnvelope node, with attribute "Existing envelope node". What exactly do I have to put there? I have tried with:
$LocalEnvironment.XMLNS.mySoapNS:Envelope
With this setting, nothing is logged in error log, but still SOAPEnvelope node directs output to failure terminal. Before that, errors were logged.
In a compute node I have written:
Code: |
SET OutputRoot.Properties = InputRoot.Properties;
-- Create an HTTP header for the message
SET OutputLocalEnvironment.HTTPRequestHeader.SOAPAction = '';
-- Declare the XML namespaces we will be using
DECLARE mySoapNS NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
DECLARE myNS1 NAMESPACE 'http://tempuri.org/scenario.customer.AccessTrackerEJB';
DECLARE myXSI NAMESPACE 'http://www.w3.org/2001/XMLSchema-instance';
DECLARE myXSD NAMESPACE 'http://www.w3.org/2001/XMLSchema';
-- Add an XML declaration to the message
SET OutputLocalEnvironment.XMLNS.(XML.XmlDecl) = '';
SET OutputLocalEnvironment.XMLNS.(XML.XmlDecl).(XML.Version) = '1.0';
SET OutputLocalEnvironment.XMLNS.(XML.XmlDecl).(XML.Encoding) = 'UTF-8';
-- Create the SOAP Envelope
SET OutputLocalEnvironment.XMLNS.mySoapNS:Envelope.(XML.NamespaceDecl)xmlns:"SOAP-ENV" = 'http://schemas.xmlsoap.org/soap/envelope/' ;
SET OutputLocalEnvironment.XMLNS.mySoapNS:Envelope.(XML.NamespaceDecl)xmlns:xsi = 'http://www.w3.org/2001/XMLSchema-instance' ;
SET OutputLocalEnvironment.XMLNS.mySoapNS:Envelope.(XML.NamespaceDecl)xmlns:xsd = 'http://www.w3.org/2001/XMLSchema' ;
|
|
|
Back to top |
|
 |
jefflowrey |
Posted: Mon Jan 29, 2007 2:29 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Did you create OutputLocalEnvironment.XMNLS with the XMLNS parser attached to it? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
hdjur |
Posted: Mon Jan 29, 2007 3:25 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Do you mean something like this create command:
Code: |
-- Copy the Properties folder across
SET OutputRoot.Properties = InputRoot.Properties;
-- Create an HTTP header for the message
SET OutputLocalEnvironment.HTTPRequestHeader.SOAPAction = '';
CREATE NEXTSIBLING OF OutputLocalEnvironment.HTTPRequestHeader domain 'XMLNS';
-- Declare the XML namespaces we will be using
DECLARE mySoapNS NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
DECLARE myNS1 NAMESPACE 'http://tempuri.org/scenario.customer.AccessTrackerEJB';
DECLARE myXSI NAMESPACE 'http://www.w3.org/2001/XMLSchema-instance';
DECLARE myXSD NAMESPACE 'http://www.w3.org/2001/XMLSchema';
-- Add an XML declaration to the message
SET OutputLocalEnvironment.XMLNS.(XML.XmlDecl) = '';
SET OutputLocalEnvironment.XMLNS.(XML.XmlDecl).(XML.Version) = '1.0';
SET OutputLocalEnvironment.XMLNS.(XML.XmlDecl).(XML.Encoding) = 'UTF-8';
-- Create the SOAP Envelope
SET OutputLocalEnvironment.XMLNS.mySoapNS:Envelope.(XML.NamespaceDecl)xmlns:"SOAP-ENV" = 'http://schemas.xmlsoap.org/soap/envelope/' ;
SET OutputLocalEnvironment.XMLNS.mySoapNS:Envelope.(XML.NamespaceDecl)xmlns:xsi = 'http://www.w3.org/2001/XMLSchema-instance' ;
SET OutputLocalEnvironment.XMLNS.mySoapNS:Envelope.(XML.NamespaceDecl)xmlns:xsd = 'http://www.w3.org/2001/XMLSchema' ;
|
With or without that, $LocalEnvironment is after mapping node, before SOAPEnvelope node like this:
local env is (
(0x01000000):HTTPRequestHeader = (
(0x03000000):SOAPAction = ''
)
(0x01000000):XMLNS = (
(0x05000018): = (
(0x06000011): = '1.0'
(0x06000012): = 'UTF-8'
)
(0x01000000)http://schemas.xmlsoap.org/soap/envelope/:Envelope = (
(0x07000012)xmlns:SOAP-ENV = 'http://schemas.xmlsoap.org/soap/envelope/'
(0x07000012)xmlns:xsi = 'http://www.w3.org/2001/XMLSchema-instance'
(0x07000012)xmlns:xsd = 'http://www.w3.org/2001/XMLSchema'
)
)
(0x01000000):LOCAL_STACK = (
(0x01000000):instanceNumber =
(0x01000000):iteration =
(0x01000000):SOURCE_STACK = (
(0x01000000):nestingLevel =
(0x01000000):occurrence =
(0x01000000):sourceLiteral =
(0x01000000):domain =
)
(0x01000000):condition =
(0x01000000):fn_sum =
(0x01000000):is_atom =
(0x03000000):expression = 12345678
)
(0x01000000):sourceParserDomain =
(0x03000000):targetParserDomain = 'MRM'
(0x03000000):tree_state = 3
(0x01000000):GLOBAL_STACK = (
(0x01000000):frame =
(0x03000000):frameDepth = 0
)
)
LOCAL_STACK, sourceParserDomain, targetParserDomain are set after mapping node. In a compute node I created only HTTPRequestHeader and Envelope (under XMLNS). Output message set was in MRM domain, that is I used to create body in MRM domain. Now I changed it to XMLNS, but still I get this: targetParserDomain = 'MRM'
And it does not help. Shall I add another compute node after mapping node to correct this setting? |
|
Back to top |
|
 |
kimbert |
Posted: Mon Jan 29, 2007 7:09 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5543 Location: Southampton
|
Quote: |
With this setting, nothing is logged in error log, but still SOAPEnvelope node directs output to failure terminal. Before that, errors were logged |
What were the errors? |
|
Back to top |
|
 |
hdjur |
Posted: Tue Jan 30, 2007 1:11 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Errors were various, depending on the SOAPEnvelope node settings.
For example:
Jan 28 01:28:37 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 "/g/g/org/xmlsoap/schemas/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 01:39:54 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 12:51:31 hrambtest user:warn|warning WebSphere Broker v6003[823446]: (WBRK.default)[5673]BIP4388W: XPath: The variable '{LocalEnvironment.SOAP.Envelope}' is not bound to a value. : WBRK.f9cdf9a0-0f01-0000-0080-929af9708d91: /build/S600_P/src/DataFlowEngine/PluginInterface/ImbXPathEngine.cpp: 685: ImbXPathEngine::evaluateExpression: :
Jan 29 09:53:36 hrambtest user:warn|warning WebSphere Broker v6003[823446]: (WBRK.default)[5673]BIP4388W: XPath: The variable '{LocalEnvironment}' is not bound to a value. : WBRK.f9cdf9a0-0f01-0000-0080-929af9708d91: /build/S600_P/src/DataFlowEngine/PluginInterface/ImbXPathEngine.cpp: 685: ImbXPathEngine::evaluateExpression: :
Jan 29 10:07:19 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/XMLNS/'http://schemas.xmlsoap.org/soap/envelope/':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: :
I have succeeded to make SOAPEnvelope work only this way:
Create new envelope = checked
Existing envelope location = $LocalEnvironment/XMLNS
I have simplified the flow to the maximum possible extent: by removing compute and mapping node, setting parser on the MQInput node to XMLNS, and by putting xml input data from example IA9O on input queue.
In this case, input data were wrapped with some predefined default soap envelope. I have identified further remaining problems which I don't know how to solve:
1. How to create our own customized soap envelope with our namespace definitions, automaticaly, using data from imported wsdl?
2. If I write ESQL in compute node as previously described for soap envelope creation, how to reference succesfully this LocalEnvironment xpath location from SOAPEnvelope node, considering namespaces on this xpath?
3. How to ensure creation of soap body in XMLNS domain, in mapping node? I have set target message set to XMLNS, but I still got MRM in output root after mapping.
4. How can I create soap body wrapped with soap envelope using only mapping node? (That is my original question in this topic.) |
|
Back to top |
|
 |
hdjur |
Posted: Fri Feb 02, 2007 3:55 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Key to understanding of my problem was that I was forced to do some work without prior extensive study of the tool, using which I was supposed to do that work.
Simple import directive in a soapenv11.mxsd would allow me to add BT to a soap envelope in a message model.
After that simple flow consisting only of mapping node and a http request node (not exactly only of them) would do. Still I wonder why wsdl import does not do all that (import directive, adding messages to a soap envelope) automatically? |
|
Back to top |
|
 |
|
|
|
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
|
|
|
|