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 » How to send and retrieve WebSphere MQ message from servlet

Post new topic  Reply to topic
 How to send and retrieve WebSphere MQ message from servlet « View previous topic :: View next topic » 
Author Message
krishnanj
PostPosted: Sat May 05, 2007 9:05 am    Post subject: How to send and retrieve WebSphere MQ message from servlet Reply with quote

Newbie

Joined: 05 May 2007
Posts: 1

Hello

I am new to java and WebSphere MQ. i have to develop
an application.
i have 1 html application running in 1 system.when i
entered the details in the form,it should go the
servlet,then the servlet should make a connection to
the queue manager in MQ and should store the message
in the queue.

then the another servlet should read the message from
the queue and should display the message in output
html.

i have downloaded the samples from the net. but that servlet shows some errors
"Error 500: java.lang.Error: Unresolved compilation problems: The import com.ibm.mqbind cannot be resolved MQQueueManager cannot be resolved (or is not a valid type) for the field BillingAddressServlet.qMgr qMgr cannot be resolved MQException cannot be resolved or is not a type qMgr cannot be resolved MQQueueManager cannot be resolved or is not a type MQException cannot be resolved or is not a type MQC cannot be resolved MQC cannot be resolved MQQueue cannot be resolved or is not a type qMgr cannot be resolved MQMessage cannot be resolved or is not a type MQMessage cannot be resolved or is not a type MQC cannot be resolved MQGetMessageOptions cannot be resolved or is not a type MQGetMessageOptions cannot be resolved or is not a type MQException cannot be resolved or is not a type com.sun.server cannot be resolved com.sun.server cannot be resolved MQC cannot be resolved MQC cannot be resolved MQQueue cannot be resolved or is not a type qMgr cannot be resolved MQMessage cannot be resolved or is not a type MQMessage cannot be resolved or is not a type MQPutMessageOptions cannot be resolved or is not a type MQPutMessageOptions cannot be resolved or is not a type MQException cannot be resolved or is not a type "

this was the error. i also attached the servlet along with this. can anyone tellme what are the things i have to change in that servlet.

Can anyone helpme on this.
its very urgent.

regards,
krishnan.J
Code:

package com.ibm.toolbelt;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.ibm.mqbind.*;         //include the MQ bindings package


/**
 * This type was created in VisualAge.
 */
public class BillingAddressServlet extends javax.servlet.http.HttpServlet {
   
   private String qManager = "NC.QManager";   //name of queue manager to connect to

   private MQQueueManager qMgr;            //define a queue manager object
/**
 * BillingAddressServlet constructor comment.
 */
public BillingAddressServlet() {
   super();
}
/**
 * This method was created in VisualAge.
 */
public void destroy() {
   System.out.println("In destroy()");
   try
   {
      //Disconnect from the queue manager
      qMgr.disconnect();
   }
   catch (MQException ex)
   {
      System.out.println("An MQ error occourred: Completion code " + ex.completionCode +
                                         " Reason code" + ex.reasonCode);
   }
   
   System.out.println("Out of destroy()");            
}
/**
 * This method was created in VisualAge.
 * @param req javax.servlet.http.HttpServletRequest
 * @param res javax.servlet.http.HttpServletResponse
 * @exception javax.servlet.ServletException The exception description.
 * @exception java.io.IOException The exception description.
 */
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

   String tempAddress = "Input information is";
   res.setContentType("text/plain");
   PrintWriter out = res.getWriter();

   if ("application/x-www-form-urlencoded".equals(req.getContentType())) {
      System.out.println("In doPost()");
      Enumeration enum = req.getParameterNames();
      while (enum.hasMoreElements()) {
         String name = (String) enum.nextElement();
         String values = req.getParameter(name);
         if(values != null) {
            tempAddress = tempAddress + "; " + name + ": " + values;
         }
         
      }
      System.out.println(tempAddress);
            
      try {
            //calling to put the order
            System.out.println("Calling putOrder()");
               putOrder(tempAddress);

               //calling orderUpdateStatus to get the conformation back
            System.out.println("Calling orderUpdateStatus()");
            String msgText = orderUpdateStatus();
            
            //Instantiate the bean and calling the JSP
            System.out.println("Instantiate the bean and calling the JSP");
            performTask(req, res, msgText);
            
            
                  
         }
         catch (Exception ex)
         {
            System.out.println("Exception caught in doPost()");
            ex.printStackTrace();
         }   
      
   }
      
   System.out.println("Out of doPost()");            
   
}
/**
 * This method was created in VisualAge.
 * @param config javax.servlet.ServletConfig
 * @exception javax.servlet.ServletException The exception description.
 */
public void init(ServletConfig config) throws ServletException {
      super.init(config);
      try {
            //Create a connection to the queue manager
            System.out.println("Create a connection to the queue manager");
            qMgr = new MQQueueManager("NC.QManager");
            System.out.println("Connection created in init()");
            
         }
         catch (MQException ex)
         {
            System.out.println("An MQ error occourred in init(): Completion code " + ex.completionCode +
                                               " Reason code" + ex.reasonCode);
            try {
               if (qMgr != null)
               //Disconnect from the queue manager
               qMgr.disconnect();
            }
            catch (MQException e)
            {
               System.out.println("An MQ error occourred in init() while disconnecting: Completion code " + e.completionCode +
                                               " Reason code" + e.reasonCode);
            }
         }
         
}
/**
 * This method was created in VisualAge.
 */
public String orderUpdateStatus() {
   String msgText = null;
   try {
      System.out.println("In orderUpdateStatus()");
      
      int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;
   
      //Specify the queue that we wish to open, and the open options.
      System.out.println("Specifying the queue that we wish to open, and the open options.");
         
            
      MQQueue ncOrderUpdateQ = qMgr.accessQueue("NC.OrderCreateQ",
                                           openOptions,
                                           qManager,     
                                           null,             // no dynamic q name
                                           null);            // no alternate user id

      //create a new get the message
      MQMessage retrievedMessage = new MQMessage();
      
      retrievedMessage.messageId = MQC.MQMI_NONE;
            
      //set the get message options
      MQGetMessageOptions gmo = new MQGetMessageOptions();
      
      //get the message off the queue
      ncOrderUpdateQ.get(retrievedMessage, gmo);
                  
      //Display the message
      //msgText = retrievedMessage.readString(retrievedMessage.getMessageLength());  //for NC.UpdateQ
      msgText = retrievedMessage.readUTF();      // for NC.OrderCreateQ
      System.out.println("The address is: " + msgText);

      //Close the queue
      ncOrderUpdateQ.close();

      
                  
   }
   catch (MQException ex)
   {
      System.out.println("An MQ error occourred: Completion code " + ex.completionCode +
                                         " Reason code" + ex.reasonCode);
      System.out.println("disconnecting in orderUpdateStatus()");
      try {
         if (qMgr != null)
         //Disconnect from the queue manager
         qMgr.disconnect();
      }
      catch (MQException e)
      {
         System.out.println("An MQ error occourred while disconnecting in orderUpdateStatus(): Completion code " + e.completionCode +
                                            " Reason code" + e.reasonCode);
      }
            
            
   }
   catch (java.io.IOException ex)
   {
      System.out.println("An error occourred while writing to the message buffer: " + ex);
      System.out.println("disconnecting in orderUpdateStatus()");
      try {
         if (qMgr != null)
         //Disconnect from the queue manager
         qMgr.disconnect();
      }
      catch (MQException ep)
      {
         System.out.println("An MQ error occourred while disconnecting in orderUpdateStatus(): Completion code " + ep.completionCode +
                                               " Reason code" + ep.reasonCode);
      }
   }
   return(msgText);
}
/**
 * This method was created in VisualAge.
 * @param request javax.servlet.http.HttpServletRequest
 * @param response javax.servlet.http.HttpServletResponse
 */
public void performTask(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String returnMessage) {
   System.out.println("in performTask()");   
   try
      {
         // instantiate the bean
         BillingAddressBean myBillingAddressBean = new BillingAddressBean();
         // set the return message in the bean
         myBillingAddressBean.setMQReturnMessage(returnMessage);
         // store the bean in the request so it can be accessed by pages which are accessed with callPage()
         ((com.sun.server.http.HttpServiceRequest)request).setAttribute("BillingAddressBean", myBillingAddressBean);
         // Call the output page.
         ((com.sun.server.http.HttpServiceResponse)response).callPage("/AddressOutputPage.jsp", request);
         
      }
      catch (Exception ex)
      {
         System.out.println("Exception caught in performTask()");
         ex.printStackTrace();
      }
}
/**
 * This method was created in VisualAge.
 */
public void putOrder(String tempAddress) {
   try {
      System.out.println("In putOrder()");
      int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;
   
      //Specify the queue that we wish to open, and the open options.
      System.out.println("Specifying the queue that we wish to open, and the open options.");
         
      MQQueue ncOrderDataQ = qMgr.accessQueue("NC.OrderCreateQ",
                                           openOptions,
                                           qManager,     
                                           null,             // no dynamic q name
                                           null);            // no alternate user id

               
      //Define a MQ message
      System.out.println("Define a MQ message");
      MQMessage customerAddress = new MQMessage();
                                    
      System.out.println("tempAddress =" + tempAddress);
               
      customerAddress.writeUTF(tempAddress);
      
      //specify the message options
      MQPutMessageOptions pmo = new MQPutMessageOptions();

      //put the message on the queue
      ncOrderDataQ.put(customerAddress, pmo);

      System.out.println("Put message done");
            
      //Close the queue
      ncOrderDataQ.close();                     
            
      }
      catch (MQException ex)
      {
            System.out.println("An MQ error occourred: Completion code " + ex.completionCode +
                                               " Reason code" + ex.reasonCode);
            System.out.println("disconnecting in doPost()");
            try {
               if (qMgr != null)
               //Disconnect from the queue manager
               qMgr.disconnect();
            }
            catch (MQException e)
            {
               System.out.println("An MQ error occourred while disconnecting in doPost(): Completion code " + e.completionCode +
                                               " Reason code" + e.reasonCode);
            }
            
            
      }
      catch (java.io.IOException ex)
      {
            System.out.println("An error occourred while writing to the message buffer: " + ex);
            System.out.println("disconnecting in doPost()");
            try {
               if (qMgr != null)
               //Disconnect from the queue manager
               qMgr.disconnect();
            }
            catch (MQException ep)
            {
               System.out.println("An MQ error occourred while disconnecting in doPost(): Completion code " + ep.completionCode +
                                               " Reason code" + ep.reasonCode);
            }
      }
               
      
      System.out.println("Out of putOrder()");
            
}
}
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Sat May 05, 2007 4:20 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

Apparently this is a classpath error.

Anyway inside a J2EE server you should be using JMS and not java base...

Enjoy
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
marcin.kasinski
PostPosted: Sat May 05, 2007 10:47 pm    Post subject: Reply with quote

Sentinel

Joined: 21 Dec 2004
Posts: 850
Location: Poland / Warsaw

fjb_saper wrote:

Anyway inside a J2EE server you should be using JMS and not java base...


Why ?

In my opinion it is not obvious.

I think you can use both JMS and base classes.

You can not say "always use JMS"

Sometimes it is better to use JMS.
Sometimes it is better to use base classes.
_________________
Marcin
Back to top
View user's profile Send private message Visit poster's website
fjb_saper
PostPosted: Sun May 06, 2007 12:09 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

marcin.kasinski wrote:
fjb_saper wrote:

Anyway inside a J2EE server you should be using JMS and not java base...


Why ?

In my opinion it is not obvious.

I think you can use both JMS and base classes.

You can not say "always use JMS"

Sometimes it is better to use JMS.
Sometimes it is better to use base classes.

But with JMS you get out of the box the connection pools and scalability + transactionality.... and so far I had not to deal with an application where the difference in speed would have mattered (we are into milliseconds here...)

Enjoy
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
BenR
PostPosted: Sun May 06, 2007 10:51 pm    Post subject: Reply with quote

Acolyte

Joined: 31 Jan 2006
Posts: 60
Location: Hursley, UK

The base Java API does not comply with the J2EE specification, so it's not appropriate to use it in that environment.
Back to top
View user's profile Send private message Visit poster's website
marcin.kasinski
PostPosted: Sun May 06, 2007 10:58 pm    Post subject: Reply with quote

Sentinel

Joined: 21 Dec 2004
Posts: 850
Location: Poland / Warsaw

I haven't thought about performance only.

Sometimes you have framework based on MQ base classes which does lots of things for you (MQ and some business logic).

I think we can not say "newer use...".
There are exceptions.
_________________
Marcin
Back to top
View user's profile Send private message Visit poster's website
fjb_saper
PostPosted: Mon May 07, 2007 4:13 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

marcin.kasinski wrote:
I haven't thought about performance only.

Sometimes you have framework based on MQ base classes which does lots of things for you (MQ and some business logic).

I think we can not say "newer use...".
There are exceptions.

You may notice that I did not say always use or never use...
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » IBM MQ Java / JMS » How to send and retrieve WebSphere MQ message from servlet
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.