You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Henri Gomez <he...@gmail.com> on 2009/01/19 10:55:42 UTC

embedded broker in Tomcat 6 available to both local vm and external clients

Hi to all,

I read carefully the docs about declaring an ActiveMQ in Tomcat :

http://activemq.apache.org/tomcat.html

I need to get ActiveMQ embedded in a webapp and for both in VM clients
but also external clients and want to get the setup in context.xml :

I tried to add in context.xml :

  <Resource name="jms/ConnectionFactory" auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS
Connection Factory"
        factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="vm://localhost" brokerName="LocalActiveMQBroker"/>


I couldn't see tcp port opend.

  <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" />

No more luck.

How could I get it works ?

With both configuration I could see the broker available by adding in
a StartupServlet :

		try {
		    InitialContext initCtx = new InitialContext();
		    Context envContext = (Context) initCtx.lookup("java:comp/env");
		    ConnectionFactory connectionFactory = (ConnectionFactory)
envContext.lookup("jms/ConnectionFactory");
		    Connection connection = connectionFactory.createConnection();
		    Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
		    MessageProducer producer = session.createProducer((Destination)
envContext.lookup("jms/topic/MyTopic"));

		    Message testMessage = session.createMessage();
		    testMessage.setStringProperty("testKey", "testValue");
		    producer.send(testMessage);
		} catch (NamingException ne) {
		    System.err.println("NamingException: " + ne);
		} catch (JMSException jmse) {
		    System.err.println("NamingException: " + jmse);
		}		

My question is :

How could we get Tomcat 6 start an ActiveMQ in embedded mode with
opened connections to outside clients.

Regards

Re: embedded broker in Tomcat 6 available to both local vm and external clients

Posted by Henri Gomez <he...@gmail.com>.
Great

Thanks !

2009/1/19 Gary Tully <ga...@gmail.com>:
> the vm protocol handler supports an embedded broker: scheme where the
> broker configuration uri syntax can be used:
>
> Something like: vm:broker:(tcp://localhost:61616)?persistent=false
>
> see: http://activemq.apache.org/vm-transport-reference.html#VMTransportReference-AdvancedBrokerConfigurationSyntax
>
>
>
> 2009/1/19 Henri Gomez <he...@gmail.com>:
>> Under debug I could see in the ConnectionFactory :
>>
>> brokerUrl = vm://localhost?broker.persistent=false,tcp://localhost:61616
>>
>> I wonder why the TCP port is not opened ;(
>>
>>
>> 2009/1/19 Henri Gomez <he...@gmail.com>:
>>> Hi to all,
>>>
>>> I read carefully the docs about declaring an ActiveMQ in Tomcat :
>>>
>>> http://activemq.apache.org/tomcat.html
>>>
>>> I need to get ActiveMQ embedded in a webapp and for both in VM clients
>>> but also external clients and want to get the setup in context.xml :
>>>
>>> I tried to add in context.xml :
>>>
>>>  <Resource name="jms/ConnectionFactory" auth="Container"
>>> type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS
>>> Connection Factory"
>>>        factory="org.apache.activemq.jndi.JNDIReferenceFactory"
>>> brokerURL="vm://localhost" brokerName="LocalActiveMQBroker"/>
>>>
>>>
>>> I couldn't see tcp port opend.
>>>
>>>  <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" />
>>>
>>> No more luck.
>>>
>>> How could I get it works ?
>>>
>>> With both configuration I could see the broker available by adding in
>>> a StartupServlet :
>>>
>>>                try {
>>>                    InitialContext initCtx = new InitialContext();
>>>                    Context envContext = (Context) initCtx.lookup("java:comp/env");
>>>                    ConnectionFactory connectionFactory = (ConnectionFactory)
>>> envContext.lookup("jms/ConnectionFactory");
>>>                    Connection connection = connectionFactory.createConnection();
>>>                    Session session = connection.createSession(false,
>>> Session.AUTO_ACKNOWLEDGE);
>>>                    MessageProducer producer = session.createProducer((Destination)
>>> envContext.lookup("jms/topic/MyTopic"));
>>>
>>>                    Message testMessage = session.createMessage();
>>>                    testMessage.setStringProperty("testKey", "testValue");
>>>                    producer.send(testMessage);
>>>                } catch (NamingException ne) {
>>>                    System.err.println("NamingException: " + ne);
>>>                } catch (JMSException jmse) {
>>>                    System.err.println("NamingException: " + jmse);
>>>                }
>>>
>>> My question is :
>>>
>>> How could we get Tomcat 6 start an ActiveMQ in embedded mode with
>>> opened connections to outside clients.
>>>
>>> Regards
>>>
>>
>
>
>
> --
> http://blog.garytully.com
>
> Open Source SOA
> http://FUSESource.com
>

Re: embedded broker in Tomcat 6 available to both local vm and external clients

Posted by Gary Tully <ga...@gmail.com>.
the vm protocol handler supports an embedded broker: scheme where the
broker configuration uri syntax can be used:

Something like: vm:broker:(tcp://localhost:61616)?persistent=false

see: http://activemq.apache.org/vm-transport-reference.html#VMTransportReference-AdvancedBrokerConfigurationSyntax



2009/1/19 Henri Gomez <he...@gmail.com>:
> Under debug I could see in the ConnectionFactory :
>
> brokerUrl = vm://localhost?broker.persistent=false,tcp://localhost:61616
>
> I wonder why the TCP port is not opened ;(
>
>
> 2009/1/19 Henri Gomez <he...@gmail.com>:
>> Hi to all,
>>
>> I read carefully the docs about declaring an ActiveMQ in Tomcat :
>>
>> http://activemq.apache.org/tomcat.html
>>
>> I need to get ActiveMQ embedded in a webapp and for both in VM clients
>> but also external clients and want to get the setup in context.xml :
>>
>> I tried to add in context.xml :
>>
>>  <Resource name="jms/ConnectionFactory" auth="Container"
>> type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS
>> Connection Factory"
>>        factory="org.apache.activemq.jndi.JNDIReferenceFactory"
>> brokerURL="vm://localhost" brokerName="LocalActiveMQBroker"/>
>>
>>
>> I couldn't see tcp port opend.
>>
>>  <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" />
>>
>> No more luck.
>>
>> How could I get it works ?
>>
>> With both configuration I could see the broker available by adding in
>> a StartupServlet :
>>
>>                try {
>>                    InitialContext initCtx = new InitialContext();
>>                    Context envContext = (Context) initCtx.lookup("java:comp/env");
>>                    ConnectionFactory connectionFactory = (ConnectionFactory)
>> envContext.lookup("jms/ConnectionFactory");
>>                    Connection connection = connectionFactory.createConnection();
>>                    Session session = connection.createSession(false,
>> Session.AUTO_ACKNOWLEDGE);
>>                    MessageProducer producer = session.createProducer((Destination)
>> envContext.lookup("jms/topic/MyTopic"));
>>
>>                    Message testMessage = session.createMessage();
>>                    testMessage.setStringProperty("testKey", "testValue");
>>                    producer.send(testMessage);
>>                } catch (NamingException ne) {
>>                    System.err.println("NamingException: " + ne);
>>                } catch (JMSException jmse) {
>>                    System.err.println("NamingException: " + jmse);
>>                }
>>
>> My question is :
>>
>> How could we get Tomcat 6 start an ActiveMQ in embedded mode with
>> opened connections to outside clients.
>>
>> Regards
>>
>



-- 
http://blog.garytully.com

Open Source SOA
http://FUSESource.com

Re: embedded broker in Tomcat 6 available to both local vm and external clients

Posted by Henri Gomez <he...@gmail.com>.
Under debug I could see in the ConnectionFactory :

brokerUrl = vm://localhost?broker.persistent=false,tcp://localhost:61616

I wonder why the TCP port is not opened ;(


2009/1/19 Henri Gomez <he...@gmail.com>:
> Hi to all,
>
> I read carefully the docs about declaring an ActiveMQ in Tomcat :
>
> http://activemq.apache.org/tomcat.html
>
> I need to get ActiveMQ embedded in a webapp and for both in VM clients
> but also external clients and want to get the setup in context.xml :
>
> I tried to add in context.xml :
>
>  <Resource name="jms/ConnectionFactory" auth="Container"
> type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS
> Connection Factory"
>        factory="org.apache.activemq.jndi.JNDIReferenceFactory"
> brokerURL="vm://localhost" brokerName="LocalActiveMQBroker"/>
>
>
> I couldn't see tcp port opend.
>
>  <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" />
>
> No more luck.
>
> How could I get it works ?
>
> With both configuration I could see the broker available by adding in
> a StartupServlet :
>
>                try {
>                    InitialContext initCtx = new InitialContext();
>                    Context envContext = (Context) initCtx.lookup("java:comp/env");
>                    ConnectionFactory connectionFactory = (ConnectionFactory)
> envContext.lookup("jms/ConnectionFactory");
>                    Connection connection = connectionFactory.createConnection();
>                    Session session = connection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>                    MessageProducer producer = session.createProducer((Destination)
> envContext.lookup("jms/topic/MyTopic"));
>
>                    Message testMessage = session.createMessage();
>                    testMessage.setStringProperty("testKey", "testValue");
>                    producer.send(testMessage);
>                } catch (NamingException ne) {
>                    System.err.println("NamingException: " + ne);
>                } catch (JMSException jmse) {
>                    System.err.println("NamingException: " + jmse);
>                }
>
> My question is :
>
> How could we get Tomcat 6 start an ActiveMQ in embedded mode with
> opened connections to outside clients.
>
> Regards
>