Yeah. tcp would refer to an external broker. Can you post the complete
stack trace?
BTW, can you try using broker.useJmx=false instead of just useJmx=false?
Is the exception occu
[EMAIL PROTECTED] wrote:
Suchitha,
Thanks for your help. I thought a URL of the form "tcp://<host>..." refers to
an external broker, not an embedded one? Am I mistaken?
I need to run the broker within the servlet container VM, not as a
separate process.
Thanks,
/U
-------------- Original message ----------------------
From: "Suchitha Koneru (sukoneru)" <[EMAIL PROTECTED]>
Hi ,
I also have two web apps running in Tomcat 5.5.20.Active mq
version being used is 4.0.2.
Our application uses an embedded broker, This broker is started by a
servlet context Listener, which is specified in web.xml of one of the
web apps. Both the web apps connect to this broker and exchange
messages. I am using tcp mode of transport tcp://localhost:"+portNum+ ,
for the broker.
Both the web apps connect to the broker using the url
failover:tcp://localhost:"+this.portNum
Make sure that the broker is started by a servlet context listener ,
which is part of the web app , which is started first in order. For
example , in my case I have two webapps servlets and users,
Servlets is started before users, so there by the broker is a part of
servlets web app.
Hope this helps.
Thanks,
Suchitha.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Monday, March 26, 2007 8:31 PM
To: users@activemq.apache.org
Subject: Re: Problems with VM transport
To follow up on my last mail: I can perhaps avoid the problem by using
distinct brokernames for each webapp; but that would create distinct
embedded brokers perhaps? I need both the webapps to share the same
broker so they receive messages published by each other.
Regards,
/U
-------------- Original message ----------------------
From: [EMAIL PROTECTED]
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(ActiveMQ
Connection
Factory.java:229)
at
org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection
(ActiveMQC
onnectionFactory.java:242)
at
org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection
(ActiveMQC
onnectionFactory.java:211)
at
org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveM
QConnectio
nFactory.java:158)
at
org.springframework.jms.listener.AbstractMessageListenerContainer.crea
teConnecti
on(AbstractMessageListenerContainer.java:989)
at
org.springframework.jms.listener.AbstractMessageListenerContainer.refr
eshSharedC
onnection(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
!DSPAM:507,460989f7266458859425881!