/*
* Copyright 2002 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.sun.s1asdev.jms.msgdest.jmsweb;
import java.io.*;
import java.rmi.RemoteException;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import java.sql.*;
import javax.sql.*;
import javax.jms.*;
import javax.transaction.*;
import javax.transaction.xa.*;
public class JmsServlet extends HttpServlet {
private Queue myQueue;
private QueueConnectionFactory qcFactory;
public void init( ServletConfig config) throws ServletException {
super.init(config);
System.out.println("In jmsservlet... init()");
}
public void service ( HttpServletRequest req , HttpServletResponse resp ) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
try {
InitialContext context = new InitialContext();
UserTransaction userTx = (UserTransaction)
context.lookup("java:comp/UserTransaction");
userTx.begin();
XAQueueConnectionFactory xacf = new com.sun.messaging.XAQueueConnectionFactory();
XAQueueSession xasess = xacf.createXAQueueConnection().createXAQueueSession();
XAResource xar = xasess.getXAResource();
System.out.println("Looking up transaction manager");
TransactionManager txMgr = (TransactionManager) context.lookup("java:appserver/TransactionManager");
txMgr.getTransaction().enlistResource(xar);
txMgr.getTransaction().delistResource(xar, xar.TMSUCCESS);
userTx.commit();
System.out.println("Transaction done.");
qcFactory = (QueueConnectionFactory) context.lookup("jms/jms_msgdest_jmsweb_QCF");
myQueue = (Queue) context.lookup("jms/jms_msgdest_jmsweb_ServletQueue");
userTx.begin();
sendMessage("this is the jms servlet test");
userTx.commit();
userTx.begin();
recvMessage();
userTx.commit();
out.println("<HTML> <HEAD> <TITLE> JMS Servlet Output </TITLE> </HEAD> <BODY BGCOLOR=white>");
out.println("<CENTER> <FONT size=+1 COLOR=blue>DatabaseServelt :: All information I can give </FONT> </CENTER> <p> " );
out.println("<FONT size=+1 color=red> Context Path : </FONT> " + req.getContextPath() + "<br>" );
out.println("<FONT size=+1 color=red> Servlet Path : </FONT> " + req.getServletPath() + "<br>" );
out.println("<FONT size=+1 color=red> Path Info : </FONT> " + req.getPathInfo() + "<br>" );
out.println("</BODY> </HTML> ");
}catch (Exception ex) {
ex.printStackTrace();
System.out.println("jmsservlet test failed");
throw new ServletException(ex);
}
}
/**
* Send a message.
*/
public String sendMessage(String msg) throws JMSException {
QueueConnection connection = null;
try {
connection = qcFactory.createQueueConnection();
QueueSession session = connection.createQueueSession
(false, Session.AUTO_ACKNOWLEDGE);
QueueSender sender = session.createSender(myQueue);
// Send a message.
TextMessage message = session.createTextMessage();
message.setText(msg);
sender.send(message);
session.close();
} finally {
try {
if( connection != null ) {
connection.close();
}
} catch(Exception e) {}
}
return msg;
}
private void recvMessage() throws JMSException {
QueueConnection connection = null;
try {
connection = qcFactory.createQueueConnection();
QueueSession session = connection.createQueueSession
(false, Session.AUTO_ACKNOWLEDGE);
connection.start();
// Create a message consumer
QueueReceiver receiver = session.createReceiver(myQueue);
System.out.println("Waiting for message on " + myQueue);
Message message = receiver.receive();
System.out.println("Received message " + message);
} finally {
try {
if( connection != null ) {
connection.close();
}
} catch(Exception e) {}
}
}
public void destroy() {
System.out.println("in jmsservlet destroy");
}
}