Hi, I have two web apps running in Tomcat and I would like both of them to make use of a common activemq broker. However I seem to have a problem where two brokers are started instead.
In my tomcat context.xml I have a single connection factory and two queues defined: <Resource name="jms/connectionFactory" auth="Container" type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory Home" factory="org.apache.activemq.jndi.JNDIReferenceFactory" brokerURL="vm:localhost" brokerName="LocalActiveMQBrokerHome" /> <Resource name="homequeue" auth="Container" type="org.apache.activemq.command.ActiveMQQueue" factory="org.apache.activemq.jndi.JNDIReferenceFactory" physicalName="homequeue" /> <Resource name="policyqueue" auth="Container" type="org.apache.activemq.command.ActiveMQQueue" factory="org.apache.activemq.jndi.JNDIReferenceFactory" physicalName="policyqueue" /> In each of my applications I use spring, and have the following in each of the app context files: <jee:jndi-lookup id="jmsConnectionFactory" jndi-name="java:comp/env/jms/connectionFactory" resource-ref="true" /> <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"> <property name="maxConnections" value="8" /> <property name="maximumActive" value="500" /> <property name="connectionFactory" ref="jmsConnectionFactory" /> </bean> <bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration"> <property name="connectionFactory" ref="pooledConnectionFactory" /> <property name="transacted" value="false" /> <property name="concurrentConsumers" value="10" /> </bean> <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> <property name="configuration" ref="jmsConfig" /> </bean> As far as I understand it, the ActiveMQComponent bean binds me via the connection factory to the broker, and whichever app starts up first will cause the broker to instantiate. However when I run the application, I see firstly a broker starting without a problem (note that I am also binding to this broker with Camel): 17:29:56,413 INFO main org.apache.activemq.broker.BrokerService:744 - ActiveMQ 5.4.0 JMS Message Broker (localhost) is starting 17:29:56,414 INFO main org.apache.activemq.broker.BrokerService:746 - For help or more information please see: http://activemq.apache.org/ 17:29:56,607 INFO main org.apache.activemq.broker.scheduler.SchedulerBroker:60 - Scheduler using directory: activemq-data\scheduler 17:29:56,792 INFO main org.apache.activemq.broker.BrokerService:519 - ActiveMQ JMS Message Broker (localhost, ID:MV5-53743-1283444996462-0:0) started 17:29:56,807 INFO main org.apache.activemq.broker.TransportConnector:252 - Connector vm://localhost Started 17:29:56,916 INFO main org.apache.camel.impl.DefaultCamelContext:956 - Route: route1 started and consuming from: Endpoint[direct://HOME] 17:29:56,916 INFO main org.apache.camel.impl.DefaultCamelContext:956 - Route: route2 started and consuming from: Endpoint[direct://POLICY] 17:29:56,917 INFO main org.apache.camel.impl.DefaultCamelContext:956 - Route: route3 started and consuming from: Endpoint[activemq://homequeue] But then subsequently I see (I think I see) a second broker attempting to start and failing. 17:30:08,964 WARN JMX connector org.apache.activemq.broker.jmx.ManagementContext:110 - Failed to start jmx connector: Cannot bind to URL [rmi://localhost:1099/jmxrmi]: javax.naming.NameAlreadyBoundException: jmxrmi [Root exception is java.rmi.AlreadyBoundException: jmxrmi] 17:30:08,976 ERROR main org.apache.activemq.broker.BrokerService:523 - Failed to start ActiveMQ JMS Message Broker. Reason: javax.management.InstanceAlreadyExistsException: org.apache.activemq:BrokerName=localhost,Type=Broker javax.management.InstanceAlreadyExistsException: org.apache.activemq:BrokerName=localhost,Type=Broker at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1484) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:963) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:917) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312) at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:482) at org.apache.activemq.broker.jmx.ManagementContext.registerMBean(ManagementContext.java:307) at org.apache.activemq.broker.jmx.AnnotatedMBean.registerMBean(AnnotatedMBean.java:54) at org.apache.activemq.broker.BrokerService.startManagementContext(BrokerService.java:2044) at org.apache.activemq.broker.BrokerService.start(BrokerService.java:474) at org.apache.activemq.transport.vm.VMTransportFactory.doCompositeConnect(VMTransportFactory.java:123) at org.apache.activemq.transport.vm.VMTransportFactory.doConnect(VMTransportFactory.java:53) at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:51) at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:80) at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:243) at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:258) at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:230) at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:178) at org.apache.activemq.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:137) at org.apache.activemq.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:121) at org.apache.activemq.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:92) at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184) at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:404) at org.springframework.jms.listener.AbstractJmsListeningContainer.establishSharedConnection(AbstractJmsListeningContainer.java:372) at org.springframework.jms.listener.DefaultMessageListenerContainer.establishSharedConnection(DefaultMessageListenerContainer.java:698) at org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:279) at org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:264) at org.springframework.jms.listener.DefaultMessageListenerContainer.start(DefaultMessageListenerContainer.java:526) at org.apache.camel.component.jms.JmsConsumer.startListenerContainer(JmsConsumer.java:80) at org.apache.camel.component.jms.JmsConsumer.doStart(JmsConsumer.java:122) at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:56) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:53) at org.apache.camel.impl.DefaultCamelContext.startServices(DefaultCamelContext.java:1189) at org.apache.camel.impl.DefaultCamelContext.doStartRoutes(DefaultCamelContext.java:1357) at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1261) at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:952) at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:203) at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:101) at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:231) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:301) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:888) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:426) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3830) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:566) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 17:30:08,979 INFO main org.apache.activemq.broker.BrokerService:555 - ActiveMQ Message Broker (localhost, null) is shutting down 17:30:08,998 INFO main org.apache.activemq.broker.BrokerService:623 - ActiveMQ JMS Message Broker (localhost, null) stopped So have I misunderstood how ActiveMQ can be used with JNDI? I have just spotted that I have both the activemq-all jar in my tomcat common dir AND via maven are putting activemq jars on the classpath as camel dependencies - might that be the problem? Any other thoughts? Any help whatsover very gladly received Thanks Jon -- View this message in context: http://activemq.2283324.n4.nabble.com/Want-one-broker-two-turn-up-tp2525279p2525279.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.