import java.lang.*;
import java.io.*;
import java.util.Properties;
/* import java.util.ResourceBundle; */ /* uncomment if using ResourceBundle */
/* to get program's input */
import java.util.Calendar;
import com.ibm.mq.*;
public class MQBrowser {
/****************************/
/* main program entry point */
/****************************/
public static void main( String[] args ) {
new MQBrowser().runBrowser(args);
}
private String qName;
/********************************************************/
/* This method does the actually browsing of the queue. */
/********************************************************/
public void runBrowser(String[] args) {
MQQueueManager qMgr = null;
MQQueue browseQueue = null;
int j = 0; /* used as a message counter */
if (args.length != 1) {
System.out.println("\nmust have one argument only: queueName\n");
System.exit(0);
}
qName = args[0];
System.out.println("\nMQBrowser.java - starts here");
System.out.println("**************************");
MQException.log = null; /* don't print out any exceptions */
try {
/*****************************/
/* Create a queue manager */
/*****************************/
// Create a connection to the QueueManager
System.out.println("Connecting to queue manager: "+qManager);
MQEnvironment.channel = System.getProperty ("message.chanel.name");
MQEnvironment.hostname = System.getProperty ("message.queue.server");
MQEnvironment.port = new Integer ((System.getProperty ("message.queue.port"))).intValue();
MQEnvironment.CCSID = new Integer ((System.getProperty ("message.queue.ccsid"))).intValue();
String queueManager= System.getProperty ("message.queue.manager");
qMgr = new MQQueueManager(queueManager);
/****************************************/
/* Open the queue in browse mode. */
/****************************************/
int openOptions = MQC.MQOO_BROWSE;
browseQueue = qMgr.accessQueue(qName, openOptions, null, null, null);
System.out.println("\n OPEN - '" + qName + "'\n\n");
/*************************************************************/
/* This method will dump the text of the message in both hex */
/* and character format. */
/*************************************************************/
static void dumpHexMessage(MQMessage myMsg) throws java.io.IOException {
int DataLength = myMsg.getMessageLength();
int ch = 0;
int chars_this_line = 0;
int CHARS_PER_LINE = 16;
StringBuffer line_text = new StringBuffer();
line_text.setLength(0);
do {
chars_this_line = 0;
String myPos = new String(Integer.toHexString(ch));
for (int i=0; i < 8 - myPos.length(); i++) {
System.out.print("0");
}
System.out.print((String)(Integer.toHexString(ch)).toUpperCase() + ": ");
/***********************************************/
/* If this is a printable character, print it. */
/* Otherwise, print a '.' as a placeholder. */
/***********************************************/
if (Character.isLetterOrDigit(b)
|| Character.getType(b) == Character.CONNECTOR_PUNCTUATION
|| Character.getType(b) == Character.CURRENCY_SYMBOL
|| Character.getType(b) == Character.MATH_SYMBOL
|| Character.getType(b) == Character.MODIFIER_SYMBOL
|| Character.getType(b) == Character.UPPERCASE_LETTER
|| Character.getType(b) == Character.SPACE_SEPARATOR
|| Character.getType(b) == Character.DASH_PUNCTUATION
|| Character.getType(b) == Character.START_PUNCTUATION
|| Character.getType(b) == Character.END_PUNCTUATION
|| Character.getType(b) == Character.OTHER_PUNCTUATION ) {
line_text.append(b);
} else {
line_text.append('.');
}
chars_this_line++;
ch++;
}
/*****************************************************/
/* pad with blanks to format the last line correctly */
/*****************************************************/
if (chars_this_line < CHARS_PER_LINE) {
for ( ;chars_this_line < CHARS_PER_LINE; chars_this_line++) {
if (chars_this_line % 2 == 0) System.out.print(" ");
System.out.print(" ");
line_text.append(' ');
}
}
/****************************************************/
/* Some of the MQ Ids are actually byte strings and */
/* need to be dumped in hex format. */
/****************************************************/
static void dumpHexId(byte[] myId) {
System.out.print("X'");
for (int i=0; i < myId.length; i++) {
char b = (char)(myId & 0xFF);
if (b < 0x10) {
System.out.print("0");
}
System.out.print((String)(Integer.toHexString(b)).toUpperCase());
}
System.out.println("'");
}
}