Hi - I am using the embedded broker in a servlet container. Each webapp in the servlet container instantiates a connection factory that refers to broker URL of
vm://localhost?broker.persistent=false as follows: (Servlet Container (WebApp1 ConnectionFactory -> vm://localhost?broker.persistent=false ) ) and this works fine. But as soon as I instantiate another webapp (WebApp2) that also uses embedded broker as follows: (Servlet Container (WebApp1 ConnectionFactory -> vm://localhost?broker.persistent=false ) (WebApp2 ConnectionFactory -> vm://localhost?broker.persistent=false ) ) the second webapp fails with the JMSException given below: javax.jms.JMSException: Could not create Transport. Reason: javax.management.InstanceAlreadyExistsException: org.apache.activemq:BrokerName=localhost,Type=Broker at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:33) at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:229) at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:242) at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:211) at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:158) at org.springframework.jms.listener.AbstractMessageListenerContainer.createConnection(AbstractMessageListenerContainer.java:989) at org.springframework.jms.listener.AbstractMessageListenerContainer.refreshSharedConnection(AbstractMessageListenerContainer.java:455) //... I thought I could (tentatively) work around this problem by disabling Jmx, so I switched the broker URL (for both webapps) to vm://localhost?broker.persistent=false&useJmx=false This did not help. Is there fundamentally a problem with multiple instances of ActiveMQConnectionFactory referring to the same broker URL (which is likely to to be the case when using embedded broker)? Thanks, /U -------------- Original message ---------------------- From: Adrian Co <[EMAIL PROTECTED]> > [EMAIL PROTECTED] wrote: > > Adrian, > > > > Thanks for the note. > > > > > > Startup: vm://localhost > > > > During runtime (after an event): > > > > failover(vm://localhost,tcp://remote:61616) > > > > > > > > Would modifying the broker URL of the connection factory cause > problems? > > > > > > > Personally, I'm not sure if you can I haven't tried it, but I > > don't > > > think it makes sense to make a vm transport failover. The > > assumption > is > > > that you have a broker running in the same vm as your jms client. > > If > the > > > broker crashes, it means your client *should* have crashed also > > and > it > > > can't failover over to a remote broker anymore. > > > > Makes sense - now I see why someone else referred to me as 'retard' :-). > > I need to have the client listen to two different brokers (the embedded > > and the external) at the same time (so that the client receives messages > published > > by both the brokers and the messages published by the client are sent to > > both > the > > brokers). Is this the correct URI to network the embedded broker with an > external broker? > > > > static:(vm://localhost,tcp://remotehost:61616) > > > Hum. AFAIK, static just tells the client to choose one url to connect > to. I don't think you can listen to two or more brokers using a single > connection. You might want to network the brokers together if thats > possible. If someone can let me know if its possible to listen to more > than two brokers using a single jms connection, I'd appreciate it also. :-) > > > > Could you also clarify an additional question? If I instantiate multiple > > connection factories in the same VM pointing to the embedded broker > > would all the cconnection factories in the VM share the same broker > > (as opposed to attempting to "instantiating a new embedded broker" if > > such a thing were possible)? > > > If they are in the same jvm, and there's already an embedded broker, it > will be reused. > > Thanks again, > > > > /U > > > > >