Visit Gopalan Suresh Raj's Web Cornucopia site...

Developing an Applet based Sender/Receiver using MQSeries
Gopalan Suresh Raj

Note
To work with any of these samples, you will need the following:
.........................................A Java 1.1 Compatible Compiler
.........................................IBM's MQSeries (ver 5.1 or higher)
.........................................IBM's MA88 Product Extension for MQSeries

The Example below, demonstrates developing an Applet based Server and Receiver for sending and receiving messages using IBM's MQSeries product.

The Steps involved in developing the MQSeries Sender/Receiver Applet component are

1. Create a new Server Connection Channel called 'JAVA.CHANNEL' on the Default Queue Manager
2. Develop the Sender/Receiver Applet
3. Build the project
4. Open up the HTML page and view the Applet

1. Create a new Server Connection Channel called 'JAVA.CHANNEL' on the Default Queue Manager:

2. Develop the Sender/Receiver Applet
The final code looks like this:

MQApplet.java
//******************************************************************************
// MQApplet.java:	Applet
//
//******************************************************************************

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

// Include the MQ package
import com.ibm.mq.*;            

public class MQApplet extends Applet 
 implements Runnable, ActionListener { 

 private Button btnCreateQ, btnOpenQ, btnSendMsg, btnRecvMsg;
 private Label labHName, labChannel, labQMgr;
 private TextField editHName, editChannel, editQMgr;
 private TextField editSendMsgText, editRecvMsgText;
 
 // define the name of your host to connect to
 private String m_hostname = "localhost";
 // define name of channel for client to use
 private String m_channel  = "JAVA.CHANNEL";      
 // Note. assumes MQ Server is listening on
 // the default TCP/IP port of 1414
 // define name of queue manager object to connect to.
 private String m_qManager = "QM_home_pc.home_pc";
 
 MQQueue m_system_default_local_queue;
 // define a queue manager object
 private MQQueueManager m_qMgr;                         
 


 private Thread	 m_mqApplet = null;
 private boolean m_fStandAlone = false;

 public MQApplet() { 
  // UI for the applet  
  btnCreateQ=new Button ( "Create Q" );
  btnCreateQ.addActionListener(this);

  btnOpenQ=new Button ( "Open Q" );
  btnOpenQ.addActionListener(this);

  btnSendMsg=new Button ( "Send Msg" );
  btnSendMsg.addActionListener(this);

  btnRecvMsg=new Button ( "Recv Msg" );
  btnRecvMsg.addActionListener(this);

  labHName=new Label ( "Host Name:" );
  labChannel=new Label ( "Channel:" );
  labQMgr=new Label ( "Queue Manager:" );
  editHName=new TextField ( "localhost", 30 );
  editChannel=new TextField ( "JAVA.CHANNEL", 30 );
  editQMgr=new TextField ( "QM_home_pc.home_pc", 30 );
  editSendMsgText=new TextField ( "Test Message", 30 );
  editRecvMsgText=new TextField ( "", 30 );
 }
 
 public String getAppletInfo() { 
  return "Name: MQApplet\r\n" +
         "Author: Gopalan Suresh Raj" +
         "Created with Microsoft Visual J++ Version 6.0";
 }

 public static void main (String []args) {
  MQApplet obj = new MQApplet();
  obj.init();
  obj.start();
 }
 
 public void init() { 
  setLayout ( new GridLayout ( 3, 1 ));
  Panel p=new Panel();
  p.setLayout ( new GridLayout ( 3,2 ));
  p.add ( labHName );
  p.add ( editHName);
  p.add ( labChannel );
  p.add ( editChannel );
  p.add ( labQMgr );
  p.add ( editQMgr );
  add ( p );
  p=new Panel();
  p.setLayout ( new GridLayout ( 3, 2 ));
  p.add ( btnCreateQ );
  p.add ( btnOpenQ );
  p.add ( btnSendMsg );
  p.add ( editSendMsgText );
  p.add ( btnRecvMsg );
  p.add ( editRecvMsgText );
  add ( p );
  resize(600, 400);
 }

 public void destroy() { 
  // TODO: Place applet cleanup code here
 }

 public void paint(Graphics g) { 
  
 }

 
 public void start() { 
  if (m_mqApplet == null) { 
   m_mqApplet = new Thread(this);
   m_mqApplet.start();
  }
  // TODO: Place additional applet start code here
 }
 
 public void stop() { 
  if (m_mqApplet != null) { 
   try {
    // Close the queue
    m_system_default_local_queue.close();
    // Disconnect from the queue manager
    m_qMgr.disconnect();
   }
   // If an error has occured in the above, try to identify what went wrong.
   // Was it an MQ error?
   catch (MQException ex) { 
    System.out.println("An MQ error occurred : Completion code " +
                       ex.completionCode +
                       " Reason code " + ex.reasonCode);
   }
   m_mqApplet.stop();
   m_mqApplet = null;
  }

  // TODO: Place additional applet stop code here
 }

 public void run() { 
  while (true) { 
   try { 
    // TODO:  Add additional thread-specific code here
    Thread.sleep(50);
   }
   catch (InterruptedException e) { 
    // TODO: Place exception-handling code here in case an
    //       InterruptedException is thrown by Thread.sleep(),
    //		 meaning that another thread has interrupted this one
    e.printStackTrace();
    stop();
   }
  }
 }



 public void actionPerformed(ActionEvent  evt) { 
  if ( evt.getSource() == btnCreateQ )
   CreateQueue();
  else if ( evt.getSource() == btnOpenQ )
   OpenQueue();
  else if ( evt.getSource() == btnSendMsg )
   SendMsg();
  else if ( evt.getSource() == btnRecvMsg )
   RecvMsg();
 }


 private void CreateQueue() { 
  
  try {
   // Set up MQ environment
   // Could have put the hostname & channel string directly here!
   MQEnvironment.hostname = editHName.getText();              
   MQEnvironment.channel  = editChannel.getText();               

   // Create a connection to the queue manager
   m_qMgr = new MQQueueManager(editQMgr.getText());
  } 
  // If an error has occured in the above, try to identify what went wrong.
  // Was it an MQ error?
  catch (MQException ex) { 
   System.out.println("An MQ error occurred : Completion code " +
                      ex.completionCode +
                      " Reason code " + ex.reasonCode);
  }
 }


 private void OpenQueue() { 
  
  try {

   // Set up the options on the queue we wish to open...
   // Note. All MQ Options are prefixed with MQC in Java.

   int openOptions = MQC.MQOO_INPUT_AS_Q_DEF |
                     MQC.MQOO_OUTPUT ;

   // Now specify the queue that we wish to open, and the open options...

   m_system_default_local_queue = m_qMgr.accessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE",
                                                     openOptions,
                                                     null,           // default q manager
                                                     null,           // no dynamic q name
                                                     null);          // no alternate user id
  }
  // If an error has occured in the above, try to identify what went wrong.
  // Was it an MQ error?
  catch (MQException ex) { 
   System.out.println("An MQ error occurred : Completion code " +
                      ex.completionCode +
                      " Reason code " + ex.reasonCode);
  }
 }

 private void SendMsg() { 

  try {
   // Define a simple MQ message, and initialise it in UTF format..
   MQMessage sendMsg = new MQMessage();
   sendMsg.writeUTF(editSendMsgText.getText());

   // specify the message options...
   MQPutMessageOptions pmo = new MQPutMessageOptions();  // accept the defaults, same
   // as MQPMO_DEFAULT constant
   // put the message on the queue
   m_system_default_local_queue.put(sendMsg,pmo);
  }
  // If an error has occured in the above, try to identify what went wrong.
  // Was it an MQ error?
  catch (MQException ex) { 
   System.out.println("An MQ error occurred : Completion code " +
                      ex.completionCode +
                      " Reason code " + ex.reasonCode);
  }
  // Was it a Java buffer space error?
  catch (java.io.IOException ex) { 
   System.out.println("An error occurred whilst writing to the message buffer: " +
                      ex);
  }
 }

 private void RecvMsg() { 
  
  try {
   // get the message back again...
   // First define a MQ message buffer to receive the message into..
   MQMessage retrievedMessage = new MQMessage();
   //   retrievedMessage.messageId = hello_world.messageId;
   editRecvMsgText.setText ("");  // clear old text
   // Set the get message options..
   MQGetMessageOptions gmo = new MQGetMessageOptions();  // accept the defaults
   // same as MQGMO_DEFAULT

   // get the message off the queue..
   m_system_default_local_queue.get(retrievedMessage,
                                    gmo,
                                    100);              // max message size

   // And prove we have the message by displaying the UTF message text

   String msgText = retrievedMessage.readUTF();
   editRecvMsgText.setText (msgText);
   System.out.println("The message is: " + msgText);
  }
  // If an error has occured in the above, try to identify what went wrong.
  // Was it an MQ error?
  catch (MQException ex) { 
   System.out.println("An MQ error occurred : Completion code " +
                      ex.completionCode +
                      " Reason code " + ex.reasonCode);
  }
  // Was it a Java buffer space error?
  catch (java.io.IOException ex) { 
   System.out.println("An error occurred whilst writing to the message buffer: " +
                      ex);
  }
 }
 
}

4. Create the HTML Code to View the Applet

MQApplet.html
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<P>&nbsp;</P><!-- Insert HTML here --><APPLET code=MQApplet.class height=200 name=MQApplet width=320>
	<PARAM NAME="foreground" VALUE="FFFFFF">
	<PARAM NAME="background" VALUE="008080">
	<PARAM NAME="label" VALUE="This string was passed from the HTML host.">
	</APPLET>

</BODY>
</HTML>

5. Open up AppletViewer and run the applet

 

click here to go to
My MQSeries HomePage...

Go to the Component Engineering Cornucopia page

This site was developed and is maintained by Gopalan Suresh Raj

This page has been visited times since February 24,1999.

Last Updated : Feb 24, '99

If you have any questions, comments, or problems regarding this site, please write to me I would love to hear from you.


Copyright (c) 1997-2000, Gopalan Suresh Raj - All rights reserved. Terms of use.

All products and companies mentioned at this site are trademarks of their respective owners.