import java.util.Date;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
* Bean implementation class for Enterprise Bean: JMSReceiver
*/
public class JMSReceiverBean implements javax.ejb.SessionBean
{
private final String queueName = "jms/Q1";
private Context jndiContext = null;
private QueueConnectionFactory queueConnectionFactory = null;
private QueueConnection queueConnection = null;
private QueueSession queueSession = null;
private Queue queue = null;
private QueueReceiver queueReceiver = null;
private javax.ejb.SessionContext mySessionCtx;
/**
* getSessionContext
*/
public javax.ejb.SessionContext getSessionContext()
{
return mySessionCtx;
}
/**
* setSessionContext
*/
public void setSessionContext(javax.ejb.SessionContext ctx)
{
mySessionCtx = ctx;
}
/**
* ejbActivate
*/
public void ejbActivate()
{}
/**
* ejbCreate
*/
public void ejbCreate() throws javax.ejb.CreateException
{
System.out.println("JMSReceiver ejbCreate");
try
{
jndiContext = new InitialContext();
queueConnectionFactory = (QueueConnectionFactory) jndiContext.lookup("jms/QCF");
queue = (Queue) jndiContext.lookup(queueName);
queueConnection = queueConnectionFactory.createQueueConnection();
queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queueReceiver = queueSession.createReceiver(queue);
queueConnection.start();
}
catch (NamingException e)
{
System.out.println(e.toString());
}
catch (JMSException e)
{
System.out.println(e.toString());
}
catch (Throwable e)
{
System.out.println(e.toString());
}
}
/**
* ejbPassivate
*/
public void ejbPassivate()
{}
/**
* ejbRemove
*/
public void ejbRemove()
{
System.out.println("JMSReceiver ejbRemove");
if (queueConnection != null)
{
try
{
queueConnection.close();
}
catch (JMSException e)
{}
}
}
public void receiveMessages()
{
boolean bReceive = true;
System.out.println("Receiver ready (send ! to stop)...");
try
{
while( bReceive)
{
Message m = queueReceiver.receive();
if (m != null)
{
if (m instanceof TextMessage)
{
TextMessage message = message = (TextMessage) m;
Date timeStamp = new Date(message.getJMSTimestamp());
System.out.println("Received message: [" + timeStamp + "][" + message.getText() + "]");
bReceive = !message.getText().equals("!");
}
else
{
System.out.println("received null message");
}
}
}
System.out.println("Receiver stopped...");
}
catch (JMSException e)
{
System.out.println(e.toString());
}
catch (Throwable e)
{
System.out.println(e.toString());
}
}
}