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 » Retrieving a Delivery queue message

Post new topic  Reply to topic
 Retrieving a Delivery queue message « View previous topic :: View next topic » 
Author Message
brokerics
PostPosted: Wed Dec 21, 2005 2:56 am    Post subject: Retrieving a Delivery queue message Reply with quote

Apprentice

Joined: 30 Oct 2005
Posts: 45

hey guys

im tryin to retrieve certain elements of a message which ive got on the delivery queue using ESQL

this is the msg:

<<mcd><Msd>xml</Msd><Type>EMPL</Type><Fmt>CwXML</Fmt></mcd>
<jms><Dst>queue:///JDBC_X/DELIVERYQUEUE</Dst><Tms>1135162337190</Tms><Dlv>2</Dlv></jms>
<usr><WSDLBinding>EMPLAgentDeliveryBinding</WSDLBinding><WSDLOperation>EMPLCreate</WSDLOperation><PrivacyLevel>None</PrivacyLevel><MessageType>EMPL</MessageType></usr> <?xml version="1.0" encoding="UTF-8"?>
<Q1:EMPL
xmlns:Q1="http://www.ibm.com/websphere/crossworlds/2002/BOSchema/EMPL" version="3.0.0" verb="Create" locale="en_US" delta="false">
<Q1:NAME>barrett</Q1:NAME>
<Q1:EID>85A</Q1:EID>
<Q1:PAY>85000</Q1:PAY>
<Q1:ObjectEventId>JDBC_X_119XWORLDS_EVENTS20051221162214.756001</Q1:ObjectEventId>
</Q1:EMPL>


i tried this


SET OutputRoot = InputRoot;
SET OutputRoot.XML."Q1:EXEC" = OutputRoot.XML."Q1:EMPL";
SET OutputRoot.XML."Q1:EMPL" = NULL;

IF (InputRoot.XML."Q1:EMPL"."Q1:PAY") > 50000 THEN

SET OutputRoot.XML."Q1:EXEC"."Q1:NAME" = UPPER('SAMPLE NAME');

SET OutputRoot.XML."Q1:EXEC".COMMENTS= UPPER('SENIOR');

END IF


but an exception is being thrown : no valid body of data found(XML)

are there any more ive to include in the msg to make a well formed msg?
Back to top
View user's profile Send private message
jsware
PostPosted: Wed Dec 21, 2005 5:02 am    Post subject: Re: Retrieving a Delivery queue message Reply with quote

Chevalier

Joined: 17 May 2001
Posts: 455

Is this the complete data portion of the MQ message or is there an MQRFH2 header preceeding this?
brokerics wrote:
<<mcd><Msd>xml</Msd><Type>EMPL</Type><Fmt>CwXML</Fmt></mcd>
<jms><Dst>queue:///JDBC_X/DELIVERYQUEUE</Dst><Tms>1135162337190</Tms><Dlv>2</Dlv></jms>
<usr><WSDLBinding>EMPLAgentDeliveryBinding</WSDLBinding><WSDLOperation>EMPLCreate</WSDLOperation><PrivacyLevel>None</PrivacyLevel><MessageType>EMPL</MessageType></usr>

This section looks like the XML portion of an RFH2 header. However it does start with a double << which makes it invalid XML. Also if you don't have an RFH2 header preceeding that, the broker's XML parser is going to throw because you don't have a well formed XML message.

brokerics wrote:
<?xml version="1.0" encoding="UTF-8"?>
<Q1:EMPL
xmlns:Q1="http://www.ibm.com/websphere/crossworlds/2002/BOSchema/EMPL" version="3.0.0" verb="Create" locale="en_US" delta="false">
<Q1:NAME>barrett</Q1:NAME>
<Q1:EID>85A</Q1:EID>
<Q1:PAY>85000</Q1:PAY>
<Q1:ObjectEventId>JDBC_X_119XWORLDS_EVENTS20051221162214.756001</Q1:ObjectEventId>
</Q1:EMPL>


This section is using XML namespaces, and I am not sure whether the plain old XML parser in the broker can handle this. If you have WBIMB v5 then you could try using the XMLNS parser (InputRoot.XMLNS.whatever) to parse the message properly.
_________________
Regards
John
The pain of low quaility far outlasts the joy of low price.
Back to top
View user's profile Send private message
alexey
PostPosted: Thu Dec 22, 2005 12:45 am    Post subject: Reply with quote

Acolyte

Joined: 18 Dec 2003
Posts: 62
Location: Israel

Hi
1. It seems like you have a message in RFH2 format, including a RFH2 header with mcd tag - it means the flow will parse the message as MRM, regardless of what you've put in your MQInput Defaults.
The message also looks like a WBI Adapter BO, so you probably have an XSD file of this BO, just import it into a message set and work with MRM parser. After a parsing you can convert to XML.

2. You can't use namespaces literally in element names, thing like InputRoot.XML."Q1:EMPL" could not work. You should read about XMLNS domain in help, http://publib.boulder.ibm.com/infocenter/wmbhelp/v6r0m0/topic/com.ibm.etools.mft.doc/ac17330_.htm
and always separate namespace from the tag name, like "Q1":"EMPL".
Back to top
View user's profile Send private message
brokerics
PostPosted: Thu Dec 22, 2005 3:50 am    Post subject: Reply with quote

Apprentice

Joined: 30 Oct 2005
Posts: 45

thanks guys

i did use the BO xsd to import it into message set and mapped it to the output set...converted it into the output domain(XML)..it worked.

but theres a small problem after that

heres the trace content of the jdbc connector
[Time: 2005/12/22 15:58:53.804] [System: ConnectorAgent] [SS: JDBC_X] [Thread: a
ppPolling (#702053529)] [Type: Trace] [Mesg: :checkStatus]
[Time: 2005/12/22 15:58:53.985] [System: ConnectorAgent] [SS: JDBC_X] [Thread: J
DBC_X/REQUESTQUEUEJmsThreadPool.thread1 (#702299289)] [Type: Trace] [Mesg: :Rece
iver.processMsg(msg) received message:
JMS Message class: jms_text
JMSType: mcd://xml/TRIGSET/EXEC?format=CwXML
JMSDeliveryMode: 2
JMSExpiration: 0
JMSPriority: 4
JMSMessageID: ID:414d5120545249422020202020202020783faa432000112e
JMSTimestamp: 1135247328730
JMSCorrelationID:null
JMSDestination: queue:///JDBC_X/DELIVERYQUEUE
JMSReplyTo: null
JMSRedelivered: false
JMSXDeliveryCount:1
JMS_IBM_MsgType:8
JMSXAppID:ters\AdapterJRE\bin\java.exe
JMS_IBM_Format:MQSTR
PrivacyLevel:None
JMS_IBM_PutApplType:11
WSDLBinding:EMPLAgentDeliveryBinding
JMSXUserID:EAIUSER
WSDLOperation:EMPLCreate
MessageType:EMPL
JMS_IBM_PutTime:10284875
JMS_IBM_PutDate:20051222
<EXEC><version>3.0.0</version><delta>FALSE</delta><locale>en_US</locale><verb>Cr
eate</verb><NS1:NAME
Another 190 character(s) omitted]
[Time: 2005/12/22 15:58:54.005] [System: ConnectorAgent] [SS: JDBC_X] [Thread: J
DBC_X/REQUESTQUEUEJmsThreadPool.thread1 (#702299289)] [Type: Trace] [Mesg: :Conv
erting the Bomo to String -- <EXEC><version>3.0.0</version><delta>FALSE</delta><
locale>en_US</locale><verb>Create</verb><NS1:NAME xmlns:NS1="http://www.ibm.com/
websphere/crossworlds/2002/BOSchema/EXEC">boris</NS1:NAME><NS2:EID xmlns:NS2="ht
tp://www.ibm.com/websphere/crossworlds/2002/BOSchema/EXEC">207</NS2:EID></EXEC>]

[Time: 2005/12/22 15:58:54.035] [System: Server] [Thread: JDBC_X/REQUESTQUEUEJms
ThreadPool.thread1 (#702299289)] [Type: Error] [MsgID: 0] [Mesg: String index ou
t of range: -1]
[Time: 2005/12/22 15:58:54.035] [System: ConnectorAgent] [SS: JDBC_X] [Thread: J
DBC_X/REQUESTQUEUEJmsThreadPool.thread1 (#702299289)] [Type: Error] [MsgID: 9068
] [Mesg: The received message cannot be converted to BO Message. The message is
not valid and is NOT processed. The response will be sent to the ReplyToQueue if
it is set. Otherwise, the message will be sent to the fault queue. Message ID:
ID:414d5120545249422020202020202020783faa432000112e]
[Time: 2005/12/22 15:58:54.035] [System: ConnectorAgent] [SS: JDBC_X] [Thread: J
DBC_X/REQUESTQUEUEJmsThreadPool.thread1 (#702299289)] [Type: Trace] [Mesg: :Send
ing fault message:
JMS Message class: jms_text
JMSType: mcd://xml/TRIGSET/EXEC?format=CwXML
JMSDeliveryMode: 2
JMSExpiration: 0
JMSPriority: 4
JMSMessageID: ID:414d5120545249422020202020202020783faa432000112e
JMSTimestamp: 1135247328730
JMSCorrelationID:null
JMSDestination: queue:///JDBC_X/DELIVERYQUEUE
JMSReplyTo: null
JMSRedelivered: false
status:-1
PrivacyLevel:None
WSDLBinding:EMPLAgentDeliveryBinding
resubmitTo:null
description:The received message cannot be converted to BO. The message is not
valid.
WSDLOperation:EMPLCreate
keys:null
MessageType:EMPL
<null>]


i think the xml output is not in the standard schema that the BO supports, is it that? if so, what should i do?
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 » Retrieving a Delivery queue message
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.