Package org.jboss.example.jms.stateless.bean

Source Code of org.jboss.example.jms.stateless.bean.StatelessSessionExampleBean

/**
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.example.jms.stateless.bean;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Enumeration;

import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;

/**
* @author <a href="mailto:ovidiu@jboss.org">Ovidiu Feodorov</a>
* @version <tt>$Revision: 1852 $</tt>
* $Id: StatelessSessionExampleBean.java 1852 2006-12-23 06:20:50Z ovidiu.feodorov@jboss.com $
*/
public class StatelessSessionExampleBean implements SessionBean
{  

   private ConnectionFactory cf = null;
  
   public void drain(String queueName) throws Exception
   {
      InitialContext ic = new InitialContext();
      Queue queue = (Queue)ic.lookup(queueName);
      ic.close();
     
      Session session = null;
      Connection conn = null;
     
      try
      {
         conn = getConnection();
         session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
         MessageConsumer consumer = session.createConsumer(queue);
         Message m = null;
         do
         {
            m = consumer.receiveNoWait();
         }
         while(m != null);
      }
      finally
      {
         if (conn != null)
         {
            closeConnection(conn);
         }
      }
   }
  
   public void send(String txt, String queueName) throws Exception
   {
      InitialContext ic = new InitialContext();
     
      Queue queue = (Queue)ic.lookup(queueName);
     
      ic.close();
     
      Session session = null;
      Connection conn = null;
     
      try
      {
         conn = getConnection();
        
         session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        
         MessageProducer producer = session.createProducer(queue);
        
         TextMessage tm = session.createTextMessage(txt);
        
         producer.send(tm);
        
         System.out.println("message " + txt + " sent to " + queueName);        
      }
      finally
      {
         if (conn != null)
         {
            closeConnection(conn);
         }
      }
   }
  
   public int browse(String queueName) throws Exception
   {
      InitialContext ic = new InitialContext();
      Queue queue = (Queue)ic.lookup(queueName);
      ic.close();
     
      Session session = null;
      Connection conn = null;
     
      try
      {
         conn = getConnection();
         session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
         QueueBrowser browser = session.createBrowser(queue);
        
         ArrayList list = new ArrayList();
         for(Enumeration e = browser.getEnumeration(); e.hasMoreElements(); )
         {
            list.add(e.nextElement());
         }
        
         return list.size();
      }
      finally
      {
         if (conn != null)
         {
            closeConnection(conn);
         }
      }
   }
  
   public String receive(String queueName) throws Exception
   {
      InitialContext ic = new InitialContext();
      Queue queue = (Queue)ic.lookup(queueName);
      ic.close();
     
      Session session = null;
      Connection conn = null;
     
      try
      {
         conn = getConnection();
         session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        
         MessageConsumer consumer = session.createConsumer(queue);
        
         System.out.println("blocking to receive message from queue " + queueName + " ...");
         TextMessage tm = (TextMessage)consumer.receive(5000);
        
         if (tm == null)
         {
            throw new Exception("No message!");
         }
        
         System.out.println("Message " + tm.getText() + " received");
        
         return tm.getText();        
      }
      finally
      {
         if (conn != null)
         {
            closeConnection(conn);
         }
      }
   }
  
   public Connection getConnection() throws Exception
   {
     
      Connection connection = null;
     
      try
      {
         connection = cf.createConnection();
        
         connection.start();        
      }
      catch(Exception e )
      {
         if(connection != null)
         {
            closeConnection(connection);
         }
         System.out.println("Failed to get connection...exception is " + e);
         throw e;
      }
     
      return connection;
   }
  
   public void closeConnection(Connection con) throws Exception
   {     
      try
      {
         con.close();        
      }
      catch(JMSException jmse)
      {
         System.out.println("Could not close connection " + con +" exception was " + jmse);
         throw jmse;
      }
   }
  
   public void setSessionContext(SessionContext ctx) throws EJBException, RemoteException
   {     
   }
  
   public void ejbCreate()
   {
      try
      {
         InitialContext ic = new InitialContext();
        
         cf = (ConnectionFactory)ic.lookup("java:/JmsXA");
        
         ic.close();
      }
      catch(Exception e)
      {
         e.printStackTrace();
         throw new EJBException("Initalization failure: " + e.getMessage());
      }
   }
  
   public void ejbRemove() throws EJBException
   {
      try
      {
         if(cf != null)
         {
            cf = null;
         }
      }
      catch(Exception e)
      {
         throw new EJBException("ejbRemove ", e);
      }
   }
  
   public void ejbActivate() throws EJBException, RemoteException
   {
   }
  
   public void ejbPassivate() throws EJBException, RemoteException
   {
   }
     
}
TOP

Related Classes of org.jboss.example.jms.stateless.bean.StatelessSessionExampleBean

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.