/*
* 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("