User: pra     
  Date: 01/09/22 07:05:21

  Added:       src/main/org/jboss/test/jmsra/bean QueueRec.java
                        QueueRecBean.java QueueRecHome.java
  Log:
  Adding test for sync receive
  
  Revision  Changes    Path
  1.1                  jbosstest/src/main/org/jboss/test/jmsra/bean/QueueRec.java
  
  Index: QueueRec.java
  ===================================================================
  /*
  * JBoss, the OpenSource EJB server
  *
  * Distributable under LGPL license.
  * See terms of license at gnu.org.
  */
  package  org.jboss.test.jmsra.bean;
  
  import javax.ejb.EJBObject;
  import java.rmi.RemoteException;
  
  /**
   * Remote interface for QueueRec bean.
   *
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Peter Antman</a>
   * @version $Revision: 1.1 $
   */
  
  public interface QueueRec extends EJBObject {
     /**
      * Get a message sync with jms ra.
      */
      public int getMessage() throws RemoteException;
  }
  
  
  
  1.1                  jbosstest/src/main/org/jboss/test/jmsra/bean/QueueRecBean.java
  
  Index: QueueRecBean.java
  ===================================================================
  /*
  * JBoss, the OpenSource EJB server
  *
  * Distributable under LGPL license.
  * See terms of license at gnu.org.
  */
  package  org.jboss.test.jmsra.bean;
  
  import java.rmi.RemoteException;
  
  import javax.ejb.SessionBean;
  import javax.ejb.SessionContext;
  import javax.ejb.EJBException;
  
  import javax.naming.InitialContext;
  import javax.naming.Context;
  
  import javax.jms.QueueConnectionFactory;
  import javax.jms.QueueConnection;
  import javax.jms.QueueSession;
  import javax.jms.QueueReceiver;
  import javax.jms.Queue;
  import javax.jms.Session;
  import javax.jms.Message;
  import javax.jms.JMSException;
  
  import org.apache.log4j.Category;
  
  
  /**
   * <p>QueueRec bean, get a message from the configured queue. The JMS stuff is 
configured via the deployment descriptor.
   *
   * <p>Test sync receive for jms ra.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Peter Antman</a>
   * @version $Revision: 1.1 $
   */
  public class QueueRecBean implements SessionBean {
     
      private final Category log = Category.getInstance(this.getClass());
     
     /**
      * Name used to lookup QueueConnectionFactory
      */
      private static final String CONNECTION_JNDI = 
"java:comp/env/jms/MyQueueConnection";
  
     /**
      * Name used to lookup queue destination
      */
      private static final String QUEUE_JNDI = "java:comp/env/jms/QueueName";
  
      private SessionContext ctx = null;
  
      private Queue queue = null;
      private QueueConnection queueConnection = null;
  
      public QueueRecBean() {
      }
      
      public void setSessionContext(SessionContext ctx) {
          this.ctx = ctx;
      }
      
      public void ejbCreate()  {
          try {
              Context context = new InitialContext();
  
            // Lookup the queue
              queue = (Queue)context.lookup(QUEUE_JNDI);
            
            // Lookup the connection factory
            QueueConnectionFactory factory = 
(QueueConnectionFactory)context.lookup(CONNECTION_JNDI);   
            queueConnection = factory.createQueueConnection();
            
            // Keep both around
          } catch (Exception ex) {
              // JMSException or NamingException could be thrown
              ex.printStackTrace();
            throw new EJBException(ex.toString());
          }
      }
     
     
      public void ejbRemove() throws RemoteException {
          if(queueConnection != null) {
              try {
               // Rememer to close the connection when bean is destroyed
                  queueConnection.close();
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
  
      public void ejbActivate() {}
      public void ejbPassivate() {}
  
     /**
      * Get a message with sync rec.
      *
      * @return int property name defined in Publisher.JMS_MESSAGE_NR, or -1 if fail.
      */
      public int getMessage() {
        QueueSession   queueSession = null;
        int ret;
        try {
            
            // Create a session
              queueSession =
                  queueConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
            // Get message
            QueueReceiver queueReceiver = queueSession.createReceiver(queue);
            Message msg = queueReceiver.receive(500L);
            if (msg != null)
            {
               log.debug("Recived message: " + msg);
               int nr = msg.getIntProperty(Publisher.JMS_MESSAGE_NR);
               log.debug("nr: " + nr);
               ret= nr;
            }
            else
            {
               log.debug("NO message recived");
               ret = -1;
            }
                    
          } catch (JMSException ex) {
           
           ex.printStackTrace();
           ctx.setRollbackOnly();
           throw new EJBException(ex.toString());
          } finally {
           // ALWAYS close the session. It's pooled, so do not worry.
           if (queueSession != null) {
              try {
                 queueSession.close();
              } catch (Exception e) {
                 e.printStackTrace();
              }
           }
          }
        return ret;
      }
     
  }
  
  
  
  1.1                  jbosstest/src/main/org/jboss/test/jmsra/bean/QueueRecHome.java
  
  Index: QueueRecHome.java
  ===================================================================
  /*
  * JBoss, the OpenSource EJB server
  *
  * Distributable under LGPL license.
  * See terms of license at gnu.org.
  */
  
  package  org.jboss.test.jmsra.bean;
  
  import java.rmi.RemoteException;
  import javax.ejb.EJBHome;
  import javax.ejb.CreateException;
  
  /**
   * Home interface for QueueRec bean.
   *
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Peter Antman</a>
   * @version $Revision: 1.1 $
   */
  public interface QueueRecHome extends EJBHome {
      QueueRec create() throws RemoteException, CreateException;
  }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to