Hi,
sorry, I forgot to note, that the resources in the context.xml and
web.xml files are replacements for the jndi.properties. I'm using
Tomcat's build-in JNDI.
It looks like you're using one Queue with the name listenerDestination.
So, try the following:
META-INF/context.xml:
<Context>
...
<Resource
name="jms/ConnectionFactory"
auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="ssl://localhost:32450"
brokerName="localhost"
useEmbeddedBroker="false" />
<Resource
name="jms/listenerDestination"
auth="Container"
type="org.apache.activemq.command.ActiveMQQueue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="dms.PublicLogQueue" />
...
</Context>
WEB-INF/web.xml:
...
<resource-env-ref>
<resource-env-ref-name>jms/ConnectionFactory</resource-env-ref-name>
<resource-env-ref-type>javax.jms.ConnectionFactory</resource-env-ref-type>
</resource-env-ref>
<resource-env-ref>
<resource-env-ref-name>jms/listenerDestination</resource-env-ref-name>
<resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
</resource-env-ref>
...
And in the code you can obtain the Destination using
try {
InitialContext ic = new InitialContext();
Context ctx = (Context) ic.lookup("java:comp/env");
ConnectionFactory cf = (ConnectionFactory)
ctx.lookup("jms/ConnectionFactory");
Connection conn = (Connection) cf.createConnection();
conn.start();
Session s = conn.createSession(false,
Session.CLIENT_ACKNOWLEDGE);
Destination d = (Destination)
ctx.lookup("jms/listenerDestination");
MessageProducer mp = s.createProducer(d);
mp.setDeliveryMode(DeliveryMode.PERSISTENT);
TextMessage tm = s.createTextMessage();
tm.setText("Foo");
mp.send(tm);
tm = s.createTextMessage();
tm.setText("Bar");
mp.send(tm);
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
...
If you want to run ActiveMQ under Tomcat, not as standalone broker,
specify useEmbeddedBroker="true" in the context.xml.
The Resource tags can be also placed in the server.xml, but I have bad
experience with JDBC resources there, so I didn't try it.
Try the configuration above. This must work for you!
PETR
On 6/2/06, Maciej Łabędzki <labedzki@man.poznan.pl> wrote:
> Hadraba Petr napisał(a):
> > Hi Maciej,
> >
> > I'm connecting from Tomcat to ActiveMQ with this configuration:
> >
> Thx, but how it corresponds to my jndi.properties file?
> How should I form my configuration files (context.xml, web.xml)?
> jndi.properties:
> ---------------
> java.naming.factory.initial =
> org.activemq.jndi.ActiveMQInitialContextFactory
> brokerURL =ssl://localhost:32450
> queue.listenerDestination = dms.PublicLogQueue
>
>
> Maciej
>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>
--
Petr Hadraba
graphic artist and software designer
http://people.hadraba-soft.com/~petr
hadrabap AT bluetone DOT cz
|