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 » IBM MQ Java / JMS » create and populate message with MQRFH2 header from java

Post new topic  Reply to topic
 create and populate message with MQRFH2 header from java « View previous topic :: View next topic » 
Author Message
datspats
PostPosted: Fri Apr 13, 2007 5:10 am    Post subject: create and populate message with MQRFH2 header from java Reply with quote

Voyager

Joined: 12 Apr 2007
Posts: 80
Location: Mumbai

Hi all,

I want create and populate message with MQRFH2 header from java program and put on queue and I want to put any data e.g. filename into <usr> folder of the MQRFH2 header.
e.g. <usr><filename>abc.txt<filename><usr>

the piece code as below

byte[] strDatabytes = strRecord.getBytes();
//strRecord is actual payload

String s1 = "";
s1 = s1.concat("<mcd>");
s1 = s1.concat("</mcd>");

String s2 = "";
s2 = s2.concat("<jms>");
s2 = s2.concat("</jms>");

String s = "";
s = s.concat("<usr>");
s = s.concat("<filename>");
s = s.concat("abc.txt");
s = s.concat("</filename>");
s = s.concat("<fileDATE>");
s = s.concat("13-April-2007");
s = s.concat("</fileDATE>");
s = s.concat("</usr>");

int rfhStrucLength = 0;
rfhStrucLength += MQC.MQRFH_STRUC_LENGTH_FIXED_2;

while(s1.getBytes().length % 4 != 0) {
s1 += " ";
}
rfhStrucLength += s1.getBytes().length;

while(s2.getBytes().length % 4 != 0) {
s2 += " ";
}
rfhStrucLength += s2.getBytes().length;

while(s.getBytes().length % 4 != 0) {
s += " ";
}
rfhStrucLength += s.getBytes().length;

//rfhStrucLength += 12; //for storing namevalue length
rfhStrucLength += strDatabytes.length;

mymsg.format = MQC.MQFMT_RF_HEADER_2;
mymsg.writeString(MQC.MQRFH_STRUC_ID); //StrucID
mymsg.writeInt4(MQC.MQRFH_VERSION_2); //Version
mymsg.writeInt4(rfhStrucLength); //StrucLength
mymsg.writeInt4(MQC.MQENC_NATIVE); //Encoding
mymsg.writeInt4(MQC.MQCCSI_INHERIT); //CodedCharSetID
mymsg.writeString(MQC.MQFMT_NONE); //Format
mymsg.writeInt4(MQC.MQRFH_NO_FLAGS); //Flags
mymsg.writeInt4(1208); //NameValueCCSID*/
mymsg.writeInt4(s1.getBytes().length); //NameValueLength <mcd>
mymsg.writeString(s1); //NameValueData <mcd>
mymsg.writeInt4(s2.getBytes().length);//NameValueLength <jms>
mymsg.writeString(s2); //NameValueData <jms>
mymsg.writeInt4(s.getBytes().length);//NameValueLength <usr>
mymsg.writeString(s); //NameValueData
mymsg.write(strDatabytes); //Actual Message Data
myqueue.put(mymsg,pmo); //putting message on queue

Please let me know where I m going wrong as When I read the message from queue using "rfhutil" I don't get the require payload (actual) in the data section. I also get the warning message from rfhutil as invalid length rfh header area while reading the message from queue. But i can see <usr> folder populated with required details.

waiting for response.
Thanks & Regards
Back to top
View user's profile Send private message Yahoo Messenger
Vitor
PostPosted: Fri Apr 13, 2007 5:19 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

It's considered somewhat rude to double post

http://www.mqseries.net/phpBB2/viewtopic.php?t=36302

Have you considered using JMS, which handles the RFH2 under the covers?
If not, have you considered searching the forum? There was a discussion about this a while back & IIRC someone posted some helper code that might act as a basis for what you're trying.

You might also want to take another look at your length calculation code.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
speediii
PostPosted: Fri Apr 13, 2007 6:08 am    Post subject: Solution! Reply with quote

Novice

Joined: 11 Apr 2006
Posts: 19

Hi,

You found the same bug as I did later with my code after I had posted it

There's a mistake on this line:

rfhStrucLength += rfhDataBytes.length;

Comment this line out - I found out later that the struct length field does NOT contain the length of the trailing message data, i.e. the file you wish to place after the RFH2 Header, XML (mcd, usr etc) section...

Sorry about that!

Hope this helps...
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 » IBM MQ Java / JMS » create and populate message with MQRFH2 header from java
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.