Author |
Message
|
samimohd |
Posted: Wed Aug 28, 2002 5:45 am Post subject: Urgent Help:Removing RFH header |
|
|
Novice
Joined: 25 Mar 2002 Posts: 21
|
I am trying remove JMS header. My header looks like this:
RFH à ¸MQSTR ¸ <mcd><Msd>jms_text</Msd></mcd> ”<jms><Dst>queue://GETTYDQM/SHP.SAP.RMT.ORDER.CREATE.OUT</Dst><Rto>queue://GETTYDQM/SAP.JMS.LCL.IN</Rto><Tms>1030542183292</Tms><Dlv>2</Dlv></jms>
This is an XML message coming from Websphere. I tried all the methods described, both on this website, and as well as in the documentation, but still the header shows up. This will cause failure in the R/3 link for SAP.
We use NEON formats. So I tried NEON formats to strip the header. It works fine if I put the message manually, but if it directly comes from Websphere, the above header is carried accross.
Can any one give me some suggestions or sample ESQL.
Thanks.
Sami. |
|
Back to top |
|
 |
kirani |
Posted: Wed Aug 28, 2002 7:53 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Sami,
Have you tried this ..
SET OutputRoot.MQRFH = NULL; _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
samimohd |
Posted: Wed Aug 28, 2002 8:34 am Post subject: |
|
|
Novice
Joined: 25 Mar 2002 Posts: 21
|
Hi Kiran, I tried that. It does remove the header but it also remove all the XML elements i.e no XML document. This is how the trace looks like after the compute node which has the code
SET OutputRoot.MQRFH = NULL;
SET OutputRoot.MQMD.Format = MQSTR;
(
(0x1000000)Properties = (
(0x3000000)MessageSet = ''
(0x3000000)MessageType = ''
(0x3000000)MessageFormat = ''
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 1208
(0x3000000)Transactional = TRUE
(0x3000000)Persistence = FALSE
(0x3000000)CreationTime = GMTTIMESTAMP '2002-08-28 16:52:50.660'
(0x3000000)ExpirationTime = -1
(0x3000000)Priority = 0
(0x3000000)ReplyIdentifier = X'000000000000000000000000000000000000000000000000'
(0x3000000)ReplyProtocol = 'MQ'
(0x3000000)Topic = NULL
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'IN.1'
(0x3000000)Transactional = TRUE
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 437
(0x3000000)Format = 'MQHRF2 '
(0x3000000)Version = 2
(0x3000000)Report = 0
(0x3000000)MsgType = 8
(0x3000000)Expiry = -1
(0x3000000)Feedback = 0
(0x3000000)Priority = 0
(0x3000000)Persistence = 0
(0x3000000)MsgId = X'414d51204d4f48414d4d454420202020f2a16c3d12300300'
(0x3000000)CorrelId = X'000000000000000000000000000000000000000000000000'
(0x3000000)BackoutCount = 0
(0x3000000)ReplyToQ = ' '
(0x3000000)ReplyToQMgr = 'MOHAMMED '
(0x3000000)UserIdentifier = 'mqsiuid '
(0x3000000)AccountingToken = X'1601051500000052437506af1cfa3ee308dd33f703000000000000000000000b'
(0x3000000)ApplIdentityData = ' '
(0x3000000)PutApplType = 11
(0x3000000)PutApplName = '\mqsiuid\Desktop\rfhutil.exe'
(0x3000000)PutDate = DATE '2002-08-28'
(0x3000000)PutTime = GMTTIME '16:52:50.660'
(0x3000000)ApplOriginData = ' '
(0x3000000)GroupId = X'000000000000000000000000000000000000000000000000'
(0x3000000)MsgSeqNumber = 1
(0x3000000)Offset = 0
(0x3000000)MsgFlags = 0
(0x3000000)OriginalLength = -1
)
(0x1000000)MQRFH2 = (
(0x3000000)Version = 2
(0x3000000)Format = ''
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 1208
(0x3000000)Flags = 0
(0x3000000)NameValueCCSID = 1208
(0x1000000)mcd = (
(0x1000000)Msd = (
(0x2000000) = 'jms_text'
)
(0x1000000)Set =
(0x1000000)Type =
(0x1000000)Fmt =
)
)
)
(
(0x1000000)Properties = (
(0x3000000)MessageSet = ''
(0x3000000)MessageType = ''
(0x3000000)MessageFormat = ''
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 1208
(0x3000000)Transactional = TRUE
(0x3000000)Persistence = FALSE
(0x3000000)CreationTime = GMTTIMESTAMP '2002-08-28 16:54:20.050'
(0x3000000)ExpirationTime = -1
(0x3000000)Priority = 0
(0x3000000)ReplyIdentifier = X'000000000000000000000000000000000000000000000000'
(0x3000000)ReplyProtocol = 'MQ'
(0x3000000)Topic = NULL
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'IN.1'
(0x3000000)Transactional = TRUE
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 437
(0x3000000)Format = 'MQHRF2'
(0x3000000)Version = 2
(0x3000000)Report = 0
(0x3000000)MsgType = 8
(0x3000000)Expiry = -1
(0x3000000)Feedback = 0
(0x3000000)Priority = 0
(0x3000000)Persistence = 0
(0x3000000)MsgId = X'414d51204d4f48414d4d454420202020f2a16c3d12500300'
(0x3000000)CorrelId = X'000000000000000000000000000000000000000000000000'
(0x3000000)BackoutCount = 0
(0x3000000)ReplyToQ = ' '
(0x3000000)ReplyToQMgr = 'MOHAMMED '
(0x3000000)UserIdentifier = 'mqsiuid '
(0x3000000)AccountingToken = X'1601051500000052437506af1cfa3ee308dd33f703000000000000000000000b'
(0x3000000)ApplIdentityData = ' '
(0x3000000)PutApplType = 11
(0x3000000)PutApplName = '\mqsiuid\Desktop\rfhutil.exe'
(0x3000000)PutDate = DATE '2002-08-28'
(0x3000000)PutTime = GMTTIME '16:54:20.050'
(0x3000000)ApplOriginData = ' '
(0x3000000)GroupId = X'000000000000000000000000000000000000000000000000'
(0x3000000)MsgSeqNumber = 1
(0x3000000)Offset = 0
(0x3000000)MsgFlags = 0
(0x3000000)OriginalLength = -1
)
(0x1000000)MQRFH2 = (
(0x3000000)Version = 2
(0x3000000)Format = ''
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 1208
(0x3000000)Flags = 0
(0x3000000)NameValueCCSID = 1208
(0x1000000)mcd = (
(0x1000000)Msd = (
(0x2000000) = 'jms_text'
)
(0x1000000)Set =
(0x1000000)Type =
(0x1000000)Fmt =
)
)
)
(
(0x1000000)Properties = (
(0x3000000)MessageSet = ''
(0x3000000)MessageType = ''
(0x3000000)MessageFormat = ''
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 1208
(0x3000000)Transactional = TRUE
(0x3000000)Persistence = FALSE
(0x3000000)CreationTime = GMTTIMESTAMP '2002-08-28 16:55:18.850'
(0x3000000)ExpirationTime = -1
(0x3000000)Priority = 0
(0x3000000)ReplyIdentifier = X'000000000000000000000000000000000000000000000000'
(0x3000000)ReplyProtocol = 'MQ'
(0x3000000)Topic = NULL
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'IN.1'
(0x3000000)Transactional = TRUE
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 437
(0x3000000)Format = 'MQHRF2'
(0x3000000)Version = 2
(0x3000000)Report = 0
(0x3000000)MsgType = 8
(0x3000000)Expiry = -1
(0x3000000)Feedback = 0
(0x3000000)Priority = 0
(0x3000000)Persistence = 0
(0x3000000)MsgId = X'414d51204d4f48414d4d454420202020f2a16c3d12600300'
(0x3000000)CorrelId = X'000000000000000000000000000000000000000000000000'
(0x3000000)BackoutCount = 0
(0x3000000)ReplyToQ = ' '
(0x3000000)ReplyToQMgr = 'MOHAMMED '
(0x3000000)UserIdentifier = 'mqsiuid '
(0x3000000)AccountingToken = X'1601051500000052437506af1cfa3ee308dd33f703000000000000000000000b'
(0x3000000)ApplIdentityData = ' '
(0x3000000)PutApplType = 11
(0x3000000)PutApplName = '\mqsiuid\Desktop\rfhutil.exe'
(0x3000000)PutDate = DATE '2002-08-28'
(0x3000000)PutTime = GMTTIME '16:55:18.850'
(0x3000000)ApplOriginData = ' '
(0x3000000)GroupId = X'000000000000000000000000000000000000000000000000'
(0x3000000)MsgSeqNumber = 1
(0x3000000)Offset = 0
(0x3000000)MsgFlags = 0
(0x3000000)OriginalLength = -1
)
(0x1000000)MQRFH2 = (
(0x3000000)Version = 2
(0x3000000)Format = ''
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 1208
(0x3000000)Flags = 0
(0x3000000)NameValueCCSID = 1208
(0x1000000)mcd = (
(0x1000000)Msd = (
(0x2000000) = 'jms_text'
)
(0x1000000)Set =
(0x1000000)Type =
(0x1000000)Fmt =
)
)
)
Below is the XML message I am getting from WCS.
RFH à ¸MQSTR ¸ <mcd><Msd>jms_text</Msd></mcd> ”<jms><Dst>queue://GETTYDQM/SHP.SAP.RMT.ORDER.CREATE.OUT</Dst><Rto>queue://GETTYDQM/SAP.JMS.LCL.IN</Rto><Tms>1030542183292</Tms><Dlv>2</Dlv></jms>
<?xml version="1.0" encoding="UTF-8"?>
<Report_NC_PurchaseOrder version="1.0">
<ControlArea>
<Verb value="Report"/>
<Noun value="NC_PurchaseOrder"/>
</ControlArea>
<DataArea>
<ReportPO>
<ReportPOHeader>
<SalesOrganization>1304</SalesOrganization>
<DistributionChannel>00</DistributionChannel>
<Division>00</Division>
<PurchaseOrderType>WEB</PurchaseOrderType>
<WCSOrderRefNumber>14201</WCSOrderRefNumber>
<DateTimeReference>
<PlacedDate>20020828</PlacedDate>
<PlacedTime>094303</PlacedTime>
</DateTimeReference>
<RequestedDeliveryDate>20020829</RequestedDeliveryDate>
<ShipMethod/>
<PaymentTerm>C547</PaymentTerm>
<PONumber>PO=::INV=::</PONumber>
</ReportPOHeader>
<ReportPOItem>
<ItemLineNumber>1</ItemLineNumber>
<ItemLineQuantity>1</ItemLineQuantity>
<SalesUOM/>
<ProductNumberByMerchant>70012701 C1</ProductNumberByMerchant>
</ReportPOItem>
<SalesOrderText/>
<RequisitionerInfo>
<ShipToNumberBySAP/>
<ContactPersonName>
<Title/>
<LastName>Masutani</LastName>
<FirstName>Akiko</FirstName>
<MiddleName/>
</ContactPersonName>
</RequisitionerInfo>
<BillToInfo>
<Address>
<AddressLine1>10 Centre St</AddressLine1>
<AddressLine2/>
<AddressLine3/>
<City>Cambridge</City>
<State>MA</State>
<Zip>02139</Zip>
<Country>US</Country>
</Address>
<ContactPersonName>
<LastName>Masutani</LastName>
<FirstName>Akiko</FirstName>
<MiddleName/>
<AlternateName/>
</ContactPersonName>
</BillToInfo>
<ShipToInfo>
<Address>
<AddressLine1>455 Forest St</AddressLine1>
<AddressLine2/>
<AddressLine3/>
<City>Marlborough</City>
<State>MA</State>
<Zip>01752</Zip>
<Country>US</Country>
</Address>
<ContactPersonName>
<LastName>Masutani</LastName>
<FirstName>Akiko</FirstName>
<MiddleName/>
<AlternateName/>
</ContactPersonName>
</ShipToInfo>
</ReportPO>
</DataArea>
</Report_NC_PurchaseOrder>
Please suggest what is wrong here.
Thanks.
Sami. |
|
Back to top |
|
 |
kirani |
Posted: Wed Aug 28, 2002 8:46 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Hi Sami,
I see that you have MQRFH2 header. So the esql statements should be:
Code: |
SET OutputRoot.MQRFH2 = NULL;
SET OutputRoot.MQMD.Format = MQFMT_STRING;
|
Also make sure you have "Copy Entire Message" selected in this compute node. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
samimohd |
Posted: Wed Aug 28, 2002 9:25 am Post subject: |
|
|
Novice
Joined: 25 Mar 2002 Posts: 21
|
Hi Kiran, I did what you suggested. But the message fails. Below is last few lines of the trace captured:
2002-08-28 13:49:40.156734 8242 ParserException BIP5005E: No valid body of the document could be found.
There should be one, and only one, top level element of type element or EmptyElement and this is not the case for the current message.
Check that the XML message being passed in is a well formed XML message that adheres to the XML specification and that only one of the above exists as a child of the root.
2002-08-28 13:49:40.159309 8242 UserTrace BIP2638E: MQPUT to queue 'MQSI.SHP.SAP.LCL.ERRORS' on queue manager '': MQCC=0, MQRC=0; node 'SHP.SAP.ORDER.CREATE 1.0 _OLD.Errors'.
The node 'SHP.SAP.ORDER.CREATE 1.0 _OLD.Errors' attempted to write a message to the specified queue 'MQSI.SHP.SAP.LCL.ERRORS' connected to queue manager ''. The MQCC was 0 and the MQRC was 0.
No user action required.
2002-08-28 13:49:40.159469 8242 UserTrace BIP2622I: Message successfully output by output node 'SHP.SAP.ORDER.CREATE 1.0 _OLD.Errors' to queue 'MQSI.SHP.SAP.LCL.ERRORS' on queue manager ''.
The MQSeries Integrator output node 'SHP.SAP.ORDER.CREATE 1.0 _OLD.Errors' successfully wrote an output message to the specified queue MQSI.SHP.SAP.LCL.ERRORS connected to queue manager .
No user action required.
Threads encountered in this trace:
1 2314 5398 7197 7454 7711 7968 8228 8242
What might be wrong here.
Thanks.
Sami. |
|
Back to top |
|
 |
kirani |
Posted: Wed Aug 28, 2002 9:49 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Sami,
Let's take one step back and create a very sample message flow to debug the problem here.
MQInput(out)->Trace1->Compute1->Trace2->MQOutput
MQInput(catch)->Trace3
MQInput: Read your input message as XML.
Trace1: Print ${Root} in it and write the trace output to some file.
Compute1: Select "Copy Entire Message" and have only 2 lines of ESQL code (as posted in my earlier post). Make sure Compute mode is set to "Message" Only.
Trace2: Print ${Root} in it and write the trace output to some file.
MQOutput: Write message to some queue.
Trace3: Print ${ExceptionList} in it.
now run a message thru this Message flow and see what output do you get in Trace nodes. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
samimohd |
Posted: Wed Aug 28, 2002 10:33 am Post subject: |
|
|
Novice
Joined: 25 Mar 2002 Posts: 21
|
Hi Kiran, created and tested the message flow. These are the results:
-- No Trace2 file
-- No message is lost beacuse it might have slipped through one of the unconnected nodes
--Contents of trace1.
(
(0x1000000)Properties = (
(0x3000000)MessageSet = ''
(0x3000000)MessageType = ''
(0x3000000)MessageFormat = ''
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 1208
(0x3000000)Transactional = TRUE
(0x3000000)Persistence = FALSE
(0x3000000)CreationTime = GMTTIMESTAMP '2002-08-28 18:59:48.480'
(0x3000000)ExpirationTime = -1
(0x3000000)Priority = 0
(0x3000000)ReplyIdentifier = X'000000000000000000000000000000000000000000000000'
(0x3000000)ReplyProtocol = 'MQ'
(0x3000000)Topic = NULL
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'IN.1'
(0x3000000)Transactional = TRUE
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 437
(0x3000000)Format = 'MQHRF2 '
(0x3000000)Version = 2
(0x3000000)Report = 0
(0x3000000)MsgType = 8
(0x3000000)Expiry = -1
(0x3000000)Feedback = 0
(0x3000000)Priority = 0
(0x3000000)Persistence = 0
(0x3000000)MsgId = X'414d51204d4f48414d4d454420202020f2a16c3d12900400'
(0x3000000)CorrelId = X'000000000000000000000000000000000000000000000000'
(0x3000000)BackoutCount = 0
(0x3000000)ReplyToQ = ' '
(0x3000000)ReplyToQMgr = 'MOHAMMED '
(0x3000000)UserIdentifier = 'mqsiuid '
(0x3000000)AccountingToken = X'1601051500000052437506af1cfa3ee308dd33f703000000000000000000000b'
(0x3000000)ApplIdentityData = ' '
(0x3000000)PutApplType = 11
(0x3000000)PutApplName = '\mqsiuid\Desktop\rfhutil.exe'
(0x3000000)PutDate = DATE '2002-08-28'
(0x3000000)PutTime = GMTTIME '18:59:48.480'
(0x3000000)ApplOriginData = ' '
(0x3000000)GroupId = X'000000000000000000000000000000000000000000000000'
(0x3000000)MsgSeqNumber = 1
(0x3000000)Offset = 0
(0x3000000)MsgFlags = 0
(0x3000000)OriginalLength = -1
)
(0x1000000)MQRFH2 = (
(0x3000000)Version = 2
(0x3000000)Format = 'MQSTR '
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 1208
(0x3000000)Flags = 0
(0x3000000)NameValueCCSID = 1208
(0x1000000)mcd = (
(0x1000000)Msd = (
(0x2000000) = 'jms_text'
)
(0x1000000)Set =
(0x1000000)Type =
(0x1000000)Fmt =
)
)
(0x1000010)XML =
--Contents of Trace3:
(
(0x1000000)RecoverableException = (
(0x3000000)File = 'F:\build\S210_P\src\DataFlowEngine\ImbDataFlowNode.cpp'
(0x3000000)Line = 536
(0x3000000)Function = 'ImbDataFlowNode::createExceptionList'
(0x3000000)Type = 'ComIbmMQInputNode'
(0x3000000)Name = '497c2af2-ef00-0000-0080-f8c7ad880cd4'
(0x3000000)Label = 'TEST-KIRAN.MQInput1'
(0x3000000)Text = 'Node throwing exception'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 2230
(0x1000000)RecoverableException = (
(0x3000000)File = 'F:\build\S210_P\src\DataFlowEngine\ImbTraceNode.cpp'
(0x3000000)Line = 329
(0x3000000)Function = 'ImbTraceNode::evaluate'
(0x3000000)Type = 'ComIbmTraceNode'
(0x3000000)Name = '2cb12af2-ef00-0000-0080-f8c7ad880cd4'
(0x3000000)Label = 'TEST-KIRAN.Trace1'
(0x3000000)Text = 'Caught exception and rethrowing'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 2230
(0x1000000)ParserException = (
(0x3000000)File = 'F:\build\S210_P\src\MTI\MTIforBroker\GenXmlParser2\XmlImbParser.cpp'
(0x3000000)Line = 287
(0x3000000)Function = 'XmlImbParser::parseFirstChild'
(0x3000000)Type = ''
(0x3000000)Name = ''
(0x3000000)Label = ''
(0x3000000)Text = 'XML Parsing Errors have occurred'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5009
(0x1000000)ParserException = (
(0x3000000)File = 'F:\build\S210_P\src\MTI\MTIforBroker\GenXmlParser2\XmlBrokerAsgardParser.cpp'
(0x3000000)Line = 692
(0x3000000)Function = 'XmlBrokerAsgardParser::error'
(0x3000000)Type = ''
(0x3000000)Name = ''
(0x3000000)Label = ''
(0x3000000)Text = 'An error has been reported by the BIPXML4C component.'
(0x3000000)Catalog = 'WMQIv210'
(0x3000000)Severity = 3
(0x3000000)Number = 5004
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '121'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = ''
)
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '13'
)
(0x1000000)Insert = (
(0x3000000)Type = 2
(0x3000000)Text = '7'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'The XML or Text declaration must start at line/column 1/1'
)
(0x1000000)Insert = (
(0x3000000)Type = 5
(0x3000000)Text = 'XML'
)
)
)
)
)
)
Looks like a proper XML is not coming through the input node;
Any suggestions ?
Thank You very much
Sami. |
|
Back to top |
|
 |
kirani |
Posted: Wed Aug 28, 2002 12:12 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Sami,
I am not very much familiar with JMS. I see that your input message has JMS header in it. Is it possible for JMS Application not to generate this header?
WMQI supports only JMSMap and JMSStream type messages. These message types maps to XML domain, and therefore supported in an identical fashion to XML messages. As per XML specification, there should be only one tag at the root level. But, for your input message there are two tags, <jms> and <Report_NC_PurchaseOrder>.
If there is MQRFH2 header present in your input message, mcd folder defines the message domain. WMQI will ignore the Message domain set in the MQInput node. Try chaning your MQInput node to have BLANK message domain and see if that makes the difference. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
mapa |
Posted: Thu Aug 29, 2002 1:39 am Post subject: |
|
|
 Master
Joined: 09 Aug 2001 Posts: 257 Location: Malmö, Sweden
|
Hi,
I haven't worked with MQSI/WMQI since before the summer but I still have an idea that might work. Although I might not get the details right.
You could try this:
1) RCD node right after the MQInput that resets the content to BLOB. ->
2) a compute node that removes unwanted headers like you have tried, and copy the BLOB message. SET OutputRoot.NEON.MYMESSAGE = InputRoot.BLOB.BLOB (Should be something like this). ->
3) Remove the jms part it in the NEON formatter as you already have done this.
Your problem is that you try to reset the headers at the same time that the message is parsed. Using BLOB MQSI/WMQI won't parse the message content for you. Note that tracing the message with anything except BLOB as the domain will make MQSI parse the message.
You could of course also strip the jms parts in the first compute node by scanning the hexrepresentation of your BLOB message and substringing it abit
To do this get the position of the </jms> and make a substring of that + the steps you need to walk forward to get passed the </jms>. Note however that you have to search for </jms> in hex...
Best regards Mapa |
|
Back to top |
|
 |
lillo |
Posted: Thu Aug 29, 2002 2:09 am Post subject: |
|
|
Master
Joined: 11 Sep 2001 Posts: 224
|
Hi,
I have the same problem. To remove the RFH2 header added by JMS I use the following code in a compute node:
Code: |
SET OutputRoot.MQMD = InputRoot.MQMD;
SET OutputRoot.MQMD.Format = 'MQSTR';
SET OutputRoot.XML = InputRoot.XML;
|
and no selection on "Copy message header" or "Copy entire message"
I hope this help you.
Cheers, _________________ Lillo
IBM Certified Specialist - WebSphere MQ |
|
Back to top |
|
 |
hdjur |
Posted: Mon Oct 02, 2006 5:36 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Hi!
If I want to remove xmitq header, is it possible to say in a compute node:
CALL CopyEntireMessage();
SET OutputRoot.MQXQH= NULL;
I'm asking it because:
Quote: |
It also provides parsers for the following message headers that your applications can include in input messages:
MQCFH
MQCIH
MQDLH
MQIIH
MQMD
MQMDE
MQRFH
MQRFH2
MQRFH2C
MQRMH
MQSAPH
MQWIH
SMQ_BMH
If you need to process and parse message body data or headers that the supplied parsers do not handle,
create user-defined parsers using the WebSphere Message Broker user-defined parser programming interface.
|
I would say no, because MQXQH is not mentioned?
Regards |
|
Back to top |
|
 |
Vitor |
Posted: Mon Oct 02, 2006 5:42 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
There are very few circumstances where it's necessary and/or wise to remove the xmitq header, which implies you're reading the message from the transmit queue. IMHO it's much better to let the message get where it's going (even if it's a dead letter queue) and use traditional techniques & provided tools (like the dead letter handler! ) to deal with it.
Certainly never heard of a flow that reads transmit queues. Odd & slightly disturbing administration and problem resolving applications yes, but a flow? What's your requirement? I'm intregued
But to return to your question, I don't believe that it's possible. Conflicting opinions welcomed as always [/i] _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
hdjur |
Posted: Mon Oct 02, 2006 6:37 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
Hi Vitor,
thank you for your answer. We were faced with a small problem with MQ listener on a destination host, so that channels to this host could not be started. We were just wandering how easy could we reach the solution for this unexpected situation, if we tried with WMQ Broker. Messages were stuck in a xmitq, if we could get messages and somehow extract simply MQXQH header, dump "clean" messages to a file, copy this file to a destination host, and then load the destination queue with this file, we would buy time to solve the problem with a listener, because one portion of messages would be transferred. I know it sounds funny, but that was one idea at that moment. |
|
Back to top |
|
 |
Vitor |
Posted: Mon Oct 02, 2006 6:57 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
Like I said, only admin & problem solving programes do this. Your solution doesn't sound that bad, but I stand (rightly or wrongly) by my assertion that you can't do it with a flow.
A small application would be fairly simple though....  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
hdjur |
Posted: Mon Oct 02, 2006 7:11 am Post subject: |
|
|
Centurion
Joined: 16 Sep 2004 Posts: 116 Location: Zagreb
|
O.K. I just didn't want to waste too much time, if it can't be obtained with a totaly simple transformation. Anyway, it's much more sensible to "repair" listener (use runmqlsr instead of amqcrsta, or repair/restart inetd). |
|
Back to top |
|
 |
|