/* * SendMessage.java * * Created on July 12, 2005, 7:12 PM */ package com.sun.appserver.ee.tests; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import javax.jms.*; import javax.naming.*; import java.util.Date; import java.util.ArrayList; /** * * @author root * @version */ public class MessageServlet extends HttpServlet { private javax.jms.QueueConnectionFactory targetQCF; private javax.jms.Queue targetQ; private PrintWriter out = null; private String action="send"; private javax.jms.QueueSession session = null; private javax.jms.QueueConnection connection = null; private javax.jms.QueueSender queueSender = null; private javax.jms.QueueReceiver queueReceiver = null; private TextMessage msgSent = null; private javax.jms.BytesMessage bytesMessageSent = null; private javax.jms.MapMessage mapMessageSent = null; private javax.jms.ObjectMessage objMessgaeSent = null; private javax.jms.StreamMessage streamMessageSent = null; private TextMessage msgReceived = null; ArrayList masterList = new ArrayList(300); private javax.jms.BytesMessage bytesMessageRecd = null; private javax.jms.MapMessage mapMessageRecd = null; private javax.jms.ObjectMessage objMessgaeRecd = null; private javax.jms.StreamMessage streamMessageRecd = null; /** * The init method looks up the QueueConectionFactory and Queue objects * via JNDI service names and initializes variables * * @exception ServletException */ public void init() throws ServletException { try{ // create the intial context Context initialContext = new InitialContext(); // look up the connection factory from the object store out("Looking up the queue connection factory from JNDI"); targetQCF = (javax.jms.QueueConnectionFactory) initialContext.lookup("java:comp/env/jms/sampleQCF"); // look up queue from the object store out("Looking up the queue from JNDI"); targetQ = (javax.jms.Queue) initialContext.lookup("java:comp/env/jms/sampleQ"); //Initializing master list for(int i = 0 ; i < 300; i++){ masterList.add(i, "Testing Broker FO and Message persistence to DB. Message id "+i); } }catch (NamingException e) { String msg = "An error was encountered trying to lookup an object from JNDI"; out(msg); e.printStackTrace(); throw new ServletException(msg, e); }catch(Exception ex){ ex.printStackTrace(); throw new ServletException(ex); } } void createConnection() { try { // Creating a QueueConnection to the Message service"); out("create a Queue Connection"); connection = targetQCF.createQueueConnection(); // Starting the Connection out("start the connection"); connection.start(); // Creating a session within the connection out("create a session"); session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); // Creating a QueueSender out("create a queueSender"); queueSender = session.createSender(targetQ); // Creating a QueueReceiver out("create a receiver"); queueReceiver = session.createReceiver(targetQ); // Building a message text out("create a text message"); msgSent = session.createTextMessage(); msgSent.setText("Testing Broker FO and Message persistence to DB."); }catch (Exception ee) { ee.printStackTrace() ; } } /** Processes requests for both HTTP GET and POST methods. * @param request servlet request * @param response servlet response */ protected void processRequest(HttpServletRequest request, HttpServletResponse response, HttpSession httpSession) throws ServletException, IOException { createConnection(); out = response.getWriter(); //httpSession = request.getSession(); boolean pass=true; setHeaders(request); action = request.getParameter("action"); ArrayList receivedList = new ArrayList(300); if("send".equalsIgnoreCase(action)){ try{ out("create a new http session"); httpSession.setAttribute("message", "ABCD"); out("begin send"); out.println("begin send " + new Date()); for(int i = 0 ; i < 300; i++){ msgSent.setIntProperty("sequence", i); //masterList.add(i, "Testing Broker FO and Message persistence to DB. Message id "+i); msgSent.setText("Testing Broker FO and Message persistence to DB. Message id "+i); queueSender.send(msgSent); } out.println("
"); out.println("end send " + new Date()); out.println("
"); out("end send"); }catch(JMSException jmsex){ String msg = "An error was encountered trying to send message"; out(msg); jmsex.printStackTrace(); throw new ServletException(msg, jmsex); }finally{ try{ session.close(); connection.close(); }catch(Exception ex){ ex.printStackTrace(); } } }else if("receive".equalsIgnoreCase(action)){ try{ out("get the http session data"); //httpSession = request.getSession(false); Object sessionData = httpSession.getAttribute("message"); if(sessionData != null){ out("this is the sesssion data "+ (String)sessionData); out.println("

Obtained Session message "+sessionData); out.println("

"); }else{ out("Session is NULL?? "); out.println("

Session is NULL?? "); out.println("

"); } out("begin receive " + new Date()); out.println("begin receive " + new Date()); System.out.println("*******Ready to receive "); for(int i = 0 ; i < 300; i++){ Message m = null; try { m = queueReceiver.receive(200); } catch (Throwable t) { t.printStackTrace(); } msgReceived = (TextMessage)m; String recdMsg = msgReceived.getText(); System.out.println("*******Received Message is : " +msgReceived.getIntProperty("sequence")); receivedList.add(msgReceived.getIntProperty("sequence"), recdMsg); //System.out.println(recdMsg); //out.println("
"); } out("The size of the receivedList " + receivedList.size()); out.println("The size of the receivedList " + receivedList.size()); out.println("

"); for(int i = 0 ; i < receivedList.size(); i++){ try { out.println((String)(receivedList.get(i))); out.println("
"); String rec =(String) (receivedList.get(i)); System.out.println("Received ##### RECEIVED LIST****:" + rec); String mast = (String)(masterList.get(i)); System.out.println("Received $$$$$$ MASTER LIST ****:" + mast); if(! rec.equalsIgnoreCase(mast)){ pass=false; } }catch(Exception e){ e.printStackTrace(); } } if(pass){ out.println("Test Passes"+""); }else { out.println("Test Failed"+""); } out.println("
"); out.println("end receive " + new Date()); out("end receive " + new Date()); out.println("
"); }catch(JMSException jmsex){ String msg = "An error was encountered trying to receive message"; out(msg); jmsex.printStackTrace(); throw new ServletException(msg, jmsex); } }else { out.println("Correct way to invoke the servlet would be MessageServlet?action=send or
"); out.println("MessageServlet?action=receive
"); } out.println(""); out.println(""); out.close(); } private void out(String message) { System.out.println(message); } private void setHeaders(HttpServletRequest request){ out.println(""); out.println(""); out.println("Servlet SendMessage"); out.println(""); out.println(""); out.println("

Servlet SendMessage at " + request.getContextPath () + "

"); } // /** Handles the HTTP GET method. * @param request servlet request * @param response servlet response */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response, request.getSession()); } /** Handles the HTTP POST method. * @param request servlet request * @param response servlet response */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response, request.getSession()); } /** Returns a short description of the servlet. */ public String getServletInfo() { return "Short description"; } // }