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:[EMAIL PROTECTED] 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)" <[EMAIL PROTECTED]> 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:[EMAIL PROTECTED] > 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.