Author |
Message
|
LazyBoy |
Posted: Wed Aug 20, 2008 6:11 am Post subject: BIP5004E Error in MB 6.1 |
|
|
Voyager
Joined: 04 May 2006 Posts: 78
|
Hi,
I have 6.1.0.1 Broker on AIX Machine.
I have a message Flow which transforms TDS Message to XML Message through Mapping Node. I am Getting following for few messages coming from IBM Mainframe system.
BIP2934E: Error detected whilst executing the function or procedure 'MappinG_Node'. : BROKER.9075ac49-1a01-0000-0080-da4b67aaf66b: /build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlRoutine.cpp: 548: SqlRoutine::invoke: ComIbmComputeNode: SCEHMA.FLOWNAMEI#FCMComposite_1_6.ComIbmMapping#FCMComposite_1_1
Aug 19 12:59:01 r59s1a9 user:err|error WebSphere Broker v6101[507906]: (BROKER.EGRP)[6683]BIP2488E: (SCHEMA.MAPPING_NODE, 554.2) Error detected whilst executing the SQL statement 'PROPAGATE FINALIZE DEFAULT DELETE DEFAULT;'. : BROKER.9075ac49-1a01-0000-0080-da4b67aaf66b: /build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp: 602: SqlStatementGroup::execute: ComIbmComputeNode: SCHEMA.MAPPING_NODE#FCMComposite_1_6.ComIbmMapping#FCMComposite_1_1
Aug 19 12:59:01 r59s1a9 user:err|error WebSphere Broker v6101[507906]: (BROKER.EGRP)[6683]BIP2230E: Error detected whilst processing a message in node 'MQOUtput'. : BROKER.9075ac49-1a01-0000-0080-da4b67aaf66b: /build/S610_P/src/DataFlowEngine/ImbMqOutputNode.cpp: 894: ImbMqOutputNode::evaluate: ComIbmMQOutputNode: SCHEMA/FLOWNAME#FCMComposite_1_2
Aug 19 12:59:01 r59s1a9 user:err|error WebSphere Broker v6101[507906]: (BROKER.EGRP)[6683]BIP5010E: XML Writing Errors have occurred. :BROKER.9075ac49-1a01-0000-0080-da4b67aaf66b: /build/S610_P/src/MTI/MTIforBroker/GenXmlParser4/ImbXMLNSCParser.cpp: 673: ImbXMLNSCParser::refreshBitStreamFromElementsCommon: ComIbmMQInputNode: SCHEMA/MAPPING_NODE#FCMComposite_1_1
Aug 19 12:59:01 r59s1a9 user:err|error WebSphere Broker v6101[507906]: (BROKER.EGRP)[6683]BIP5004E: An XML parsing error 'An invalid XML character (Unicode: 0x0) was found in the element content of the document.' occurred on line 1 column 4627 when parsing element '/Root/XMLNSC'. Internal error codes : '1502', '2'. : BROKER.9075ac49-1a01-0000-0080-da4b67aaf66b: /build/S610_P/src/MTI/MTIforBroker/GenXmlParser4/ImbXMLNSCDocHandler.cpp: 507: ImbXMLNSCDocHandler::handleParseErrors: ComIbmMQInputNode: SCEHMA.FLOWNAME#FCMComposite_1_1
When I resubmit the same message on the same server or on my local windows machine just by copying the message content the message works without any exception.
Another strange thing about this is the message is not backed out to Back out queue, only the exception is written to wmb.log file.
My Message flow looks like this:
MQINPUT -> CandleInput->Mapping Node->compute Node->Candleoutput->MqOutput
The compute node adds xml declaration :
<?xml version="1.0" encoding="UTF-8" ?>
The catch node of Mqinput is connected to Error Handler :
Input->CandleMonitor->Throw Node
The Input Message is parsed as MRM Domain TDS message and Output Message is XMLNSC Domain.
Any one please help, what could be the problem. |
|
Back to top |
|
 |
kimbert |
Posted: Thu Aug 21, 2008 3:41 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Looks as if
- you are using XMLNSC as your output domain
- you have enabled validation in your output node ( or it is set to 'Inherit' )
- one of the elements in your message tree contains the null character '0x00'.
I suggest the following procedure to diagnose the problem:
- switch off validation
- capture the output message
- look for the null character at the specified offset
That should tell you which element contains the bad character, and you should then be able to modify your flow ( or maybe the CCSID / encoding settings ) to correct the problem. |
|
Back to top |
|
 |
LazyBoy |
Posted: Thu Aug 21, 2008 5:30 am Post subject: |
|
|
Voyager
Joined: 04 May 2006 Posts: 78
|
Hi Kimbert,
Thank you for the reply.
When I ran the message on my Windows Broker through toolkit test client the message was sucessful and the output xml looks like this:
<Element1>00000</Element1>
<Element2> </Element2>
<Element3>00</Element3>
I am not sure what is the null character '0x00' you are talking about.,Is '00' in the above message the null character?
Also, How do I fix this problem, we are doing convertion at the MQ channel, out of thousands of messages only 5 messages have failed.
Surprisingly these messages are not backed out to back out queue, Any reasons for this.
Thank You. |
|
Back to top |
|
 |
kimbert |
Posted: Thu Aug 21, 2008 5:47 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
I am not sure what is the null character '0x00' you are talking about |
A character with the hex value '0x00'. A null is not a printable character so you will not be able to see it using an ordinary text editor/viewer. You will need to look at the raw bytes of the message.
And you will need to look at a message which has failed, on the platform where it failed ( AIX ) - no point in inspecting a message which has been processed successfully  |
|
Back to top |
|
 |
LazyBoy |
Posted: Thu Aug 21, 2008 7:21 am Post subject: |
|
|
Voyager
Joined: 04 May 2006 Posts: 78
|
Hi kimbert,
I did disable the validation on Mapping Node and MqOutput Node and ran the message successfully. I didn't find any Null characters in the hexa Message.
What else could be the problem?
How is it that the same message is successful on windows but not on Aix |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Aug 21, 2008 5:18 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
LazyBoy wrote: |
How is it that the same message is successful on windows but not on Aix |
Possible CR/LF CCSID problem?  _________________ MQ & Broker admin |
|
Back to top |
|
 |
LazyBoy |
Posted: Tue Aug 26, 2008 2:19 pm Post subject: |
|
|
Voyager
Joined: 04 May 2006 Posts: 78
|
Any one Please help.
I dont know how to move forward with this problem, The Problem is with source data,There seems to be a 0x0 character in the message which is causing this error. I dont know How to move forward.
Do I need to do any convertion , If yes How?
Or Do I need to Inform the source application team not to send a data with 0x0 character because broker cannot handle.
Please Help.  |
|
Back to top |
|
 |
kimbert |
Posted: Tue Aug 26, 2008 3:10 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
I've lost track of where we are with this one. Do you have an input message which causes a failure every time it is submitted? Have you checked that OutputRoot.Properties.CodedCharSetId and OutputRoot.Properties.Encoding are set correctly? |
|
Back to top |
|
 |
LazyBoy |
Posted: Wed Aug 27, 2008 5:31 am Post subject: |
|
|
Voyager
Joined: 04 May 2006 Posts: 78
|
The CCSID is 819 and Encoding is 273. |
|
Back to top |
|
 |
kimbert |
Posted: Wed Aug 27, 2008 7:04 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
An XML parsing error 'An invalid XML character (Unicode: 0x0) was found in the element content of the document.' occurred on line 1 column 4627 when parsing element '/Root/XMLNSC'. Internal error codes : '1502', '2'. : BROKER.9075ac49-1a01-0000-0080-da4b67aaf66b: /build/S610_P/src/MTI/MTIforBroker/GenXmlParser4/ImbXMLNSCDocHandler.cpp: 507: ImbXMLNSCDocHandler::handleParseErrors: ComIbmMQInputNode: SCEHMA.FLOWNAME#FCMComposite_1_1 |
Try this:
- Set OutputRoot.Properties.CodedCharSetId to 1200 ( that is UTF16 )
- Switch off validation in the Mapping node / output node
You should get a UTF-16 XML document. Look at line 1 column 4627 and check the raw bytes. You will probably find an invalid character there. If you do, post the results here. |
|
Back to top |
|
 |
LazyBoy |
Posted: Thu Aug 28, 2008 8:41 am Post subject: |
|
|
Voyager
Joined: 04 May 2006 Posts: 78
|
Can any one tell me how to find for the Invalid character 0x0 in the message.
I have tried following things to look for the character "00" in message:
1) Used RFHUTIL Hexa check box to see the hexa equivalent of message and searched for "00"- No Luck.
2) used Hexa Editor by copying the XML message on to Editor and search for character "00" - No luck
3) Converted the XML Message in another flow to BLOB and search for character "00"- No Luck.
I am stuck with this error, Surprising part of this is:
1) the message which fails because of invalid character 0x0 when resubmitted to input node by opening it in editor like notepad works fine.
2) The same message works fine on Windows , though the ccsid and Encoding in AIX and Windows are same set to 819 and 273 respectively.
 |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Aug 28, 2008 2:28 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
LazyBoy wrote: |
Can any one tell me how to find for the Invalid character 0x0 in the message.
I have tried following things to look for the character "00" in message:
1) Used RFHUTIL Hexa check box to see the hexa equivalent of message and searched for "00"- No Luck.
2) used Hexa Editor by copying the XML message on to Editor and search for character "00" - No luck
3) Converted the XML Message in another flow to BLOB and search for character "00"- No Luck.
I am stuck with this error, Surprising part of this is:
1) the message which fails because of invalid character 0x0 when resubmitted to input node by opening it in editor like notepad works fine.
2) The same message works fine on Windows , though the ccsid and Encoding in AIX and Windows are same set to 819 and 273 respectively.
 |
Going to point 2 of surprising part.
This still looks to me like a CCSID problem. You say that you have CCSID 819 and 273 on AIX. Looks to me that the message you are getting might be CCSID 1208 (UTF-8 ) and that it may not have the right characteristics on the message. This could be why when you open it and and resubmit it you are OK. To me it looks like you have a multichar special character which contains a hex 00 in its makeup that is not recognized in CCSID 819.
Check the content of the message for its CCSID, check the content descriptor's (MQMD or RFH2...) CCSID and verify that they are set correctly.
Does the receiver get a text or a bytes message and if text does it ask for a get with convert?
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
LazyBoy |
Posted: Fri Aug 29, 2008 9:04 am Post subject: |
|
|
Voyager
Joined: 04 May 2006 Posts: 78
|
Thank you for the reply.
I found out the presence of the characters whose hexa value is "00". Thanks to Kimbert and UltraEdit.
Now I need to know how to convert this invalid character to a valid character.
Quote: |
Check the content of the message for its CCSID, check the content descriptor's (MQMD or RFH2...) CCSID and verify that they are set correctly.
Does the receiver get a text or a bytes message and if text does it ask for a get with convert? |
The Sender to Broker is doing Channel convertion(this was done because broker was receving ebcidic characters).The broker sender is sending with CCSID of 819(I did check the MQMD of message).
I used 1208 ccsid in MQINPUT NODE CONVERT check box, but still could not solve invalid character error. The Broker Receiver application is not doing any convert on get as both broker queue manager(ccsid 819) and broker receiver's queue manager(ccsid 819) are on same platform.
Why are these characters not allowed in XML?
Can Anyone tell me how to handle XML with Invalid character in broker? |
|
Back to top |
|
 |
dilse |
Posted: Fri Aug 29, 2008 9:14 am Post subject: |
|
|
 Master
Joined: 24 Jun 2004 Posts: 270
|
Quote: |
Why are these characters not allowed in XML? |
They are not allows as per XML standard because they are non-printable.
Quote: |
Can Anyone tell me how to handle XML with Invalid character in broker? |
One way is to read the XML as BLOB and remove the NULL characters from the message and parse the message after that.
Hope this helps...
DilSe.. |
|
Back to top |
|
 |
kimbert |
Posted: Fri Aug 29, 2008 12:58 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
One way is to read the XML as BLOB and remove the NULL characters from the message and parse the message after that. |
I don't think that will work. The input message is not XML - it is TDS.
Quote: |
Now I need to know how to convert this invalid character to a valid character. |
I'm not convinced yet. Maybe we should find out where is it coming from first. Otherwise we will fix the symptom, but not the root cause.
- Does this 0x0 character originate in the TDS input message?
- If so, which field is it and what its simple type ( xs:string? xs:integer? )
- Are you quite certain that the 0x0 is not the result of a gone-wrong code page conversion ( wrong CCSID ). |
|
Back to top |
|
 |
|