[jboss-user] [Messaging, JMS & JBossMQ] - Re: Unable to get Connection to send a message on the testQu

jbosspatni do-not-reply at jboss.com
Fri Aug 31 11:17:50 EDT 2007


Also attached is the helper class

package com.dummy.util;

import java.util.ArrayList;
import java.util.Enumeration;
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;

import org.jboss.example.jms.common.Util;

public class MessageUtility {
	private ConnectionFactory cf = null;
	public void drain(String queueName) throws Exception
	   {
	     System.out.println("Inside Message Utility:drain");
		  InitialContext ic = new InitialContext();
	       Queue queue = (Queue)ic.lookup(queueName);
	      ic.close();
	      System.out.println("Message Utility: Found teh queue");
	      Session session = null;
	      Connection conn = null;
	      
	      try
	      {
	         conn = getConnection();
	         session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
	         MessageConsumer consumer = session.createConsumer(queue);
	         System.out.println("Inside Message Utility:Created Consumer");
	         Message m = null;
	         do
	         {
	            m = consumer.receive(1L);
	         }
	         while(m != null);
	      }
	      finally
	      {
	         if (conn != null)
	         {
	            closeConnection(conn);
	         }
	      }
	   }
	   
	   public void send(String txt, String queueName) throws Exception
	   {
	      InitialContext ic = new InitialContext();
	      System.out.println("Inside Message Utility:send QueueName :"+ queueName);
	      if (!Util.doesDestinationExist(queueName,ic))
	      {
	         System.out.println("Destination " + queueName + " does not exist, deploying it");
	         Util.deployQueue(queueName,ic);
	         
	      }
	      Queue queue = (Queue)ic.lookup(queueName);
	      System.out.println("Inside Message Utility:send");
	      ic.close();
	      
	      Session session = null;
	      Connection conn = null;
	      
	      try
	      {
	    	  System.out.println("Inside Message Utility:send: Before getting connection");
	    	  conn = getConnection();
	    	  System.out.println("Inside Message Utility:send:After getting connection");
	         session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
	         System.out.println("Inside Message Utility:send:session" + session);
	         MessageProducer producer = session.createProducer(queue);
	         
	         TextMessage tm = session.createTextMessage(txt);
	         System.out.println("Inside Message Utility:send:producer is "+ producer);
	         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();
	      System.out.println("Inside Message Utility:browse");        
	      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();
	      System.out.println("Inside Message Utility:receive");
	      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;
	      System.out.println("Inside Message Utility:send.getConnection:cf"+cf);
	      try
	      {
	    	  InitialContext ic = new InitialContext();
	    	  System.out.println("Inside Message Utility:send.getConnection:ic"+ic);    
		         //cf = (ConnectionFactory)ic.lookup("java:JmsXA");
		        //cf = (ConnectionFactory)ic.lookup("/ConnectionFactory");
		      cf = (ConnectionFactory)ic.lookup("java:/ConnectionFactory");
		      System.out.println("Inside Message Utility:send.getConnection:create connection");
		      connection = cf.createConnection();
		      System.out.println("Inside Message Utility:send.getConnection:before connection start:conn is"+ connection);   
	          connection.start();  
	          ic.close();
	      }
	      catch(Exception e )
	      {
	         e.printStackTrace();
	    	  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 initiate()
	   {
	      try
	      {
	         InitialContext ic = new InitialContext();
	         
	         //cf = (ConnectionFactory)ic.lookup("java:/JmsXA");
	         cf = (ConnectionFactory)ic.lookup("/ConnectionFactory");
	         
	         ic.close();
	      }
	      catch(Exception e)
	      {
	         e.printStackTrace();
	        
	      }
	   }
	   
	  
}


Please help in fixing this issue


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4080047#4080047

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4080047



More information about the jboss-user mailing list