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 » MQI 2.1 - issues with MRM XML layer

Post new topic  Reply to topic
 MQI 2.1 - issues with MRM XML layer « View previous topic :: View next topic » 
Author Message
olivier
PostPosted: Sat Jan 12, 2002 3:51 am    Post subject: Reply with quote

Newbie

Joined: 11 Jan 2002
Posts: 1

I've been testing the new MQI 2.1 release (with CSD #00). The new features (over previous 2.02 release) seem really interesting.
But might also be some issues.

I've been playing with XML messages, comparing the 'XML domain parser' and the 'MRM domain parser with XML layer'.
I built 2 basic flows, converting an XML message from one parser to the other one:
flow 1 : XML -> MRM-XML
flow 2 : MRM-XML -> XML

I expected to get the same XML message on each side, as I populated my MRM message set by importing my DTD.

My XML message:
tralala
My DTD:



The XML domain corresponding tree:
(
(0x1000000)Properties = (
(0x3000000)MessageSet = ''
(0x3000000)MessageType = ''
(0x3000000)MessageFormat = ''
.......
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'testOP_IN_XMLMRM'
.......
)
(0x1000010)XML = (
(0x1000000)mess = (
(0x1000000)texte = (
(0x2000000) = 'tralala'
)
)
)
)

The MRM-XML domain corresponding tree :

(
(0x1000000)Properties = (
(0x3000000)MessageSet = 'DOEOU2C076001'
(0x3000000)MessageType = 'm_mess'
(0x3000000)MessageFormat = 'XML'
.......
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'testOP_IN_MRMXML'
.......
)
(0x1000008)MRM = (
(0x1000001)mess = (
(0x3000012)texte = 'tralala'
)
)
)


First issue:
----------------
The MRM-XML side message has an additional and non expected tag:

tralala

I can't get rid of this tag, and I get a parse exception if the input message doesn't have this tag.

Why ???

Second issue:
---------------------

The XML -> MRM-XML flow is very unstable. Without modifying it, it works, then fails, then works again ...
I get unexpected exceptions on the MQOutput node:

(
(0x1000000)RecoverableException = (
(0x3000000)File = 'F:buildS210_PsrcDataFlowEngineImbDataFlowNode.cpp'
(0x3000000)Line = 536
(0x3000000)Function = 'ImbDataFlowNode::createExceptionList'
(0x3000000)Type = 'ComIbmMQInputNode'
(0x3000000)Name = 'c8d60347-eb00-0000-0080-aa810504c0a0'
(0x3000000)Label = 'testOP_XMLMRM.MQInput testOP_IN_XMLMRM'
(0x3000000)Text = 'Node throwing exception'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 2230
(0x1000000)RecoverableException = (
(0x3000000)File = 'F:buildS210_PsrcDataFlowEngineImbMqOutputNode.cpp'
(0x3000000)Line = 708
(0x3000000)Function = 'ImbMqOutputNode::evaluate'
(0x3000000)Type = 'ComIbmMQOutputNode'
(0x3000000)Name = 'cef30347-eb00-0000-0080-aa810504c0a0'
(0x3000000)Label = 'testOP_XMLMRM.MQOutput testOP_OUT'
(0x3000000)Text = 'Caught exception and rethrowing'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 2230
(0x1000000)ParserException = (
(0x3000000)File = 'F:buildS210_Psrccpipwfxmlxmldictionaryinfo.cpp'
(0x3000000)Line = 248
(0x3000000)Function = 'XMLDictionaryInfo::XMLStructDefs::getIndex'
(0x3000000)Type = ''
(0x3000000)Name = ''
(0x3000000)Label = ''
(0x3000000)Text = 'XML Worker Internal Error'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5401
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'Counldn't find the tag id (&1) in the dictionary'
)
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '7209065'
)
)
)
)
)

This is quite disturbing.
Have anyone experienced such instabilities ?

PS: I have only 256M ram one my laptop. Could this be related ?
Back to top
View user's profile Send private message
zpat
PostPosted: Mon Jan 14, 2002 4:42 am    Post subject: Reply with quote

Jedi Council

Joined: 19 May 2001
Posts: 5849
Location: UK

Try changing the XML tag name "m_mess" to "mess" in the MRM message set.

You will find after importing a DTD - that is necessary to edit the XML tag names that are generated by the importer. I expect this to be corrected in CSD 1. To do this select the XML format tab in the message set.

NOTE: Always add an XML physical format to the message set before importing a DTD.

I'm sure that it's not caused by your RAM size, but if you can increase it then things will run faster.

[ This Message was edited by: zpat on 2002-01-14 04:52 ]
Back to top
View user's profile Send private message
mpuetz
PostPosted: Tue Jan 15, 2002 4:50 pm    Post subject: Reply with quote

Centurion

Joined: 05 Jul 2001
Posts: 149
Location: IBM/Central WebSphere Services

Hi,

MRM and standard XML parser are different in the way they represent tags with values.

The XML parser represents

<texte>tralala</texte>

with two elements

1. a pure name element with name "texte"
2. a pure value element with value "tralala" which is the first child of the name element "texte"

The MRM parser does it in simpler fashion with
just a single name-value element with property name being "texte" and the value being "tralala".

By the way the numbers you see in the trace node have the following meaning:

a leading 1 means : name element
a 2 means : value element
a 3 means : name-value element

These digits are parser *independent*, hence
they will keep their meaning when you copy from parser domain into the other. The problem is not all parsers support pure value elements (actually I am only aware of the standard XML
parser supporting these, all others use only name and name-value elements). Hence you will into trouble if you are copying message trees from one parsers domain into another, e.g.

SET OutputRoot.MRM.abc = InputRoot.XML.abc;

if the the representation of the right hand tree cannot be uniquely represented in the tree structure supported by the left parser.
The tree copy routine would convert your

name
value

structure in the XML tree into a

name-value

structure in the MRM tree and vice versa.

You may think that MRM's way of doing it seems more natural at first, but it is less flexible .
It won't allow you to represent a (valid) XML message like

<texte>tralala<subtext>blabla</subtext>yahoo</texte>

but the XML parser can:

name (texte)
- value (tralala)
- name (subtext)
- value (blabla)
- value (yahoo)

this means texte has two values, "tralala" and "yahoo".

If you access the value of texte in ESQL

SET text = InputRoot.XML.texte;

you will always get the first value. To access the second you would have to do something like

SET text = InputRoot.XML.texte.(XML.value)[2];

using a qualifying wildcard (XML.value).

The MRM parser cannot represent a structure like this with its pure name and name-value
elements.

Lesson learned: different parsers do different things and copying between them will typically be lossy. The MRM XML layer doesn't allow all XML structures to be represented, hence if you need full XML support use the standard XML parser. Read the MQSI Programming Guide to deepen your understanding of how parsers work.

PS: If you wonder what the rightmost digits in the numbers in front of elements in trace files are, they represent the parser specific subtypes (e.g. that's how the XML parser disinguishes between whitespace and regular values elements ans such).


_________________
Mathias Puetz

IBM/Central WebSphere Services
WebSphere Business Integration Specialist
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 » MQI 2.1 - issues with MRM XML layer
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.