activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From denez <iboud...@yahoo.fr>
Subject RE: Error on starting QueueConnection
Date Mon, 20 Aug 2007 09:35:23 GMT

Here is my new investigation :
I create a new project!
I only implement one class which implements ServletContextListener and
MessageListener, and wrote this so simple code : 

public class ActiveMQBrokerStartListener implements ServletContextListener,
MessageListener {
	BrokerService broker = new BrokerService();
	private String url="tcp://localhost:61616";
	private Connection connection;
	private Session session;
	private Queue aQueue ;
	
	public void contextInitialized(ServletContextEvent arg0) {
		try {
			broker.addConnector(url) ;
			broker.start();
			
			ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(url);
			connection = factory.createConnection();    	
			session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			aQueue = session.createQueue("test") ;
			MessageConsumer consumer = session.createConsumer(aQueue);
			consumer.setMessageListener(this) ;
			
			connection.start();
			
			Thread.sleep(10000) ;
			
			consumer = null ;
			connection.stop() ;
			
		} catch (Exception e) {
			System.err.println(e.getMessage());
        	e.printStackTrace();
        	throw new RuntimeException(e);
		}
	}

	public void contextDestroyed(ServletContextEvent arg0) {
		try {
			broker.stop();
			System.out.println("Connetor is stopped !");
		} catch (Exception e) {
			System.err.println(e.getMessage());
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

	public void onMessage(Message arg0) {
		// TODO Auto-generated method stub
		
	}
}

I have no error at all.
therefore, there is it somebody who could tell me what occurs with my jndi
file because it seems that it is the cause of the problem.
Indeed, i probably miss to tell you that in the first version of my code i
can't put :

ActiveMQConnectionFactory cf =
ActiveMQConnectionFactory)ctx.lookup("jms/ConnectionFactory");
Conenction conn = cf.createQueueConnection();

This code produce a ClassCastException.
Could you give a explanation or something.
Probably too many time spent on this problem to have a clear and precise
vision of it.
Thanks in advance,
Regards,

Denez


denez wrote:
> 
> I try your both sample, but it still doesn't work.
> I try to move my project directory because originally contains space. but
> still have the same error.
> I probaly miss something in my configuration or someting is wrong in my
> code.
> I don't understand.
> So, could you give me or send me a sample web application that use
> ActiveMQ ?
> Thanks in advance.
> Regards,
> 
> Denez
> 
> 
> Suchitha Koneru (sukoneru) wrote:
>> 
>> The JMS  documentation suggests that we start the connection after
>> creating the receiver and registering it with a message listener. Please
>> look at point no: 6 in the section "Client to Consume Messages"
>> http://java.sun.com/developer/technicalArticles/Ecommerce/jms/index.html
>>  
>> 
>> -----Original Message-----
>> From: Dave Carlson [mailto:gshpsrule@charter.net] 
>> Sent: Friday, August 17, 2007 7:58 AM
>> To: users@activemq.apache.org
>> Cc: Suchitha Koneru (sukoneru)
>> Subject: RE: Error on starting QueueConnection
>> 
>> Are you sure about the ordering? It seems odd that you would want to
>> start the flow of messages across the connection before you have created
>> a receiver. Looking at ActiveMQ example code in ConsumerTool, they are
>> creating the receiver first...
>> 
>> 			ActiveMQConnectionFactory connectionFactory =
>> new ActiveMQConnectionFactory(user, password, url);
>> 			Connection connection =
>> connectionFactory.createConnection();
>> 			if (durable && clientId != null &&
>> clientId.length()>0 && !"null".equals(clientId) ) {
>> 				connection.setClientID(clientId);
>> 			}
>> 			connection.setExceptionListener(this);
>> 			connection.start();
>> 
>> 			session = connection.createSession(transacted,
>> ackMode);
>> 			if (topic) {
>> 				destination =
>> session.createTopic(subject);
>> 			} else {
>> 				destination =
>> session.createQueue(subject);
>> 			}
>> 
>> 			replyProducer = session.createProducer(null);
>> 	
>> replyProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
>> 
>> 			MessageConsumer consumer = null;
>> 			if (durable && topic) {
>> 				consumer =
>> session.createDurableSubscriber((Topic) destination, consumerName);
>> 			} else {
>> 				consumer =
>> session.createConsumer(destination);
>> 			}
>> 
>> ---- "Suchitha Koneru (sukoneru)" <sukoneru@cisco.com> wrote: 
>>> Start the queue connection after creating the receiver .  Change the 
>>> order and see. It is always recommended that the connection is started
>> 
>>> after creating the receiver . The following should be the order. Give 
>>> it a try.
>>> 
>>>   ActiveMQQueueReceiver aqr =
>>>  (ActiveMQQueueReceiver)qs.createReceiver(q) ; 
>>>                 aqr.setMessageListener(new
>>>  BatchReceiverTechnicalService()) ;
>>>   aqc.start() ;
>>> 
>>> Also I noticed that in the jndi resource for jms/Connectionfactory  
>>> you are not using max.Inactivity flag for the broker url.
>>> But while adding connector to the broker you are using this flag, 
>>> please use the same broker url through out for consistency.
>>> 
>>> 
>>> -----Original Message-----
>>> From: denez [mailto:ibouddha@yahoo.fr]
>>> Sent: Thursday, August 16, 2007 7:03 AM
>>> To: users@activemq.apache.org
>>> Subject: Re: Error on starting QueueConnection
>>> 
>>> 
>>> Do you already have this type of error ?
>>> Do i forget something in my configuration.
>>> I use :
>>> apache-activemq-4.1.1.jar
>>> Tomcat 5.5.23
>>> jdk1.5.0_07
>>> 
>>> Could you tell me if something is wrong !
>>> Here is my context declaration in Tomcat :
>>> 
>>> <Context path="/jms" reloadable="true" docBase="C:\myJMSApp"
>>> workDir="C:\myJMSApp\work" >
>>> 	<Resource
>>>         	name="jms/ConnectionFactory"
>>>         	auth="Container"
>>>         	type="org.apache.activemq.ActiveMQConnectionFactory"
>>>         	description="JMS Connection Factory"
>>>         	factory="org.apache.activemq.jndi.JNDIReferenceFactory"
>>>         	brokerURL="tcp://localhost:61616"
>>>         	brokerName="LocalActiveMQBroker"
>>> 	        useEmbeddedBroker="true"/>
>>> 
>>>     	<Resource name="jms/batch"
>>>         	auth="Container"
>>>         	type="org.apache.activemq.command.ActiveMQQueue"
>>>         	factory="org.apache.activemq.jndi.JNDIReferenceFactory"
>>>         	physicalName="batch"/>
>>> </Context>
>>> 
>>> Thanks in advance for all reply, help / answer.
>>> Regards,
>>> 
>>> Denez
>>> 
>>> 
>>> denez wrote:
>>> > 
>>> > Hi all,
>>> > 
>>> > I got the same error trying to create a sender !
>>> > A very strange thing appear because there is no exception throw ! 
>>> > Just
>>> 
>>> > nothing happened and the rest of my code is never (i suspect)
>>> excecuted.
>>> > 
>>> > Could you help me, or ask me if something is not clear.
>>> > Thanks in advance,
>>> > Regards,
>>> > 
>>> > Denez
>>> > 
>>> > 
>>> > denez wrote:
>>> >> 
>>> >> I search around to find my error and find that you should use 
>>> >> ActiveMQConnection.
>>> >> Now i can start the connection but have a same problem will trying 
>>> >> to
>>> 
>>> >> createReceiver.
>>> >> See the code below (previous + modification) :
>>> >> 
>>> >> public class ActiveMQBrokerStartListener implements 
>>> >> ServletContextListener {
>>> >> 	
>>> >>      BrokerService broker = new BrokerService();
>>> >>      ActiveMQConnection aqc = null ;
>>> >> 	
>>> >>      public void contextInitialized(ServletContextEvent arg0) {
>>> >>         try{
>>> >>               
>>> >>
>>> broker.addConnector("tcp://localhost:61616?trace=true&wireFormat.maxIn
>>> ac
>>> tivityDuration=-1");
>>> >>                broker.start();
>>> >>                InitialContext ic = new InitialContext();
>>> >>                Context ctx = (Context) ic.lookup("java:comp/env");
>>> >>                ActiveMQConnectionFactory acf =
>>> >>                    
>>> >> (ActiveMQConnectionFactory)ctx.lookup("jms/ConnectionFactory");
>>> >>                aqc =
>> (ActiveMQConnection)acf.createQueueConnection();
>>> >>                aqc.start() ;
>>> >>                ActiveMQQueueSession qs =
>>> >>                     
>>> >> (ActiveMQQueueSession)aqc.createQueueSession(false,
>>> >> Session.CLIENT_ACKNOWLEDGE) ;
>>> >>                ActiveMQQueue q =
>>> (ActiveMQQueue)ctx.lookup("jms/batch");
>>> >>                ActiveMQQueueReceiver aqr =
>>> >> (ActiveMQQueueReceiver)qs.createReceiver(q) ; // ERROR LINE
>>> >>                aqr.setMessageListener(new
>>> >> BatchReceiverTechnicalService()) ;
>>> >>         }catch(Exception e){
>>> >>                System.err.println(e.getMessage());
>>> >>                e.printStackTrace();
>>> >>                throw new RuntimeException(e);
>>> >>         }
>>> >>      }
>>> >> 
>>> >>      public void contextDestroyed(ServletContextEvent arg0) {
>>> >>                try{
>>> >>                               aqc.close() ;
>>> >>                               //qc.close() ;
>>> >>                               broker.stop();
>>> >>                }catch(Exception e){
>>> >>                               System.err.println(e.getMessage());
>>> >>                               e.printStackTrace();
>>> >>                               throw new RuntimeException(e);
>>> >>                }
>>> >>      }
>>> >> }
>>> >> 
>>> >> What is wrong ??
>>> >> Why i can not create a Receiver ?
>>> >> 
>>> >> Thanks in advance
>>> >> Regards,
>>> >> Denez
>>> >> 
>>> >> 
>>> >> 
>>> >> 
>>> >> denez wrote:
>>> >>> 
>>> >>> Hi all,
>>> >>> 
>>> >>> I would like to start a broker and Activate a MessageListener on

>>> >>> startup of my webApp.
>>> >>> I made all the needed configuration to have a
>>> ServletContextListener.
>>> >>> I can debug inside my ServletContextListener implementation named
>> :
>>> >>> ActiveMQBrokerStartListener.
>>> >>> You can see the code of it below :
>>> >>> 
>>> >>> public class ActiveMQBrokerStartListener implements 
>>> >>> ServletContextListener {
>>> >>>      BrokerService broker = new BrokerService();
>>> >>>      QueueConnection qc = null ;
>>> >>> 	
>>> >>>      public void contextInitialized(ServletContextEvent arg0) {
>>> >>>         try{
>>> >>>        	      
>>> >>>
>>> broker.addConnector("tcp://localhost:61616?trace=true&wireFormat.maxIn
>>> ac
>>> tivityDuration=-1");
>>> >>>                broker.start();
>>> >>>                InitialContext ic = new InitialContext();
>>> >>>                Context ctx = (Context) ic.lookup("java:comp/env");
>>> >>>                ActiveMQConnectionFactory cf =
>>> >>>                            
>>> >>> ActiveMQConnectionFactory)ctx.lookup("jms/ConnectionFactory");
>>> >>>                qc = (QueueConnection) cf.createQueueConnection();
>>> >>>                qc.start() ;
>>> >>>                QueueSession qs = qc.createQueueSession(false,
>>> >>> Session.CLIENT_ACKNOWLEDGE) ;
>>> >>>                Queue q = (Queue)ctx.lookup("jms/batch");
>>> >>>                QueueReceiver qr = qs.createReceiver(q) ;
>>> >>>                qr.setMessageListener(new Receiver()) ;
>>> >>>         }catch(Exception e){
>>> >>>                System.err.println(e.getMessage());
>>> >>>                e.printStackTrace();
>>> >>>                throw new RuntimeException(e);
>>> >>>         }
>>> >>>      }
>>> >>> 
>>> >>>      public void contextDestroyed(ServletContextEvent arg0) {
>>> >>>         try{
>>> >>>                qc.close() ;
>>> >>>                broker.stop();
>>> >>>         }catch(Exception e){
>>> >>>                System.err.println(e.getMessage());
>>> >>>                e.printStackTrace();
>>> >>>                throw new RuntimeException(e);
>>> >>>         }
>>> >>>      }
>>> >>> }
>>> >>> 
>>> >>> I place a breakpoint on the line that should create a
>> QueueSession.
>>> >>> But never enter in it. If i place a breakpoint on the ligne that

>>> >>> createQueueConnection i have it.
>>> >>> So the problem is on the qc.start() ; If i inspect the 
>>> >>> QueueConnection i can see that the started=false as normal.
>>> >>> 
>>> >>> What is wrong on my code ?
>>> >>> Could you help me, or tell me what you think about this ?
>>> >>> 
>>> >>> Regards,
>>> >>> Denez
>>> >>> 
>>> >> 
>>> >> 
>>> > 
>>> > 
>>> 
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Error-on-starting-QueueConnection-tf4278515s2354
>>> .h
>>> tml#a12182022
>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Error-on-starting-QueueConnection-tf4278515s2354.html#a12232778
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message