You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Torsten <do...@luniks.net> on 2005/10/02 00:02:40 UTC
Connect to JMS Queue from Servlet
Hello,
I am trying to connect to a JMS queue from a method that I call from a
servlet in a simple webapp.
Both the queue and the webapp seems to have been deployed correctly and
the webapp works so far, but when trying to look up the
ConnectionFactory I get a javax.naming.NameNotFoundException.
Below I'll paste my resource adapter XML and the relevant code, could
somebody please tell me what I am doing wrong?
Thanks in advance,
Torsten
Context init = new InitialContext();
// Lookup below seems to succeed but...
ctx = (Context)init.lookup("java:comp/env");
// but this one fails: NameNotFoundException: jms/ConnectionFactory
factory = (QueueConnectionFactory)ctx.lookup("jms/ConnectionFactory");
<?xml version="1.0" encoding="UTF-8"?>
<connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector"
version="1.5"
configId="test/Queues"
parentId="org/apache/geronimo/SystemJMS">
<resourceadapter>
<resourceadapter-instance>
<resourceadapter-name>ActiveMQ RA</resourceadapter-name>
<config-property-setting
name="ServerUrl">tcp://localhost:61616</config-property-setting>
<!-- config-property-setting
name="UserName">user</config-property-setting -->
<!-- config-property-setting
name="Password">pass</config-property-setting -->
<workmanager>
<gbean-link>DefaultWorkManager</gbean-link>
</workmanager>
</resourceadapter-instance>
<outbound-resourceadapter>
<connection-definition>
<connectionfactory-interface>javax.jms.ConnectionFactory</connectionfactory-interface>
<connectiondefinition-instance>
<name>jms/ConnectionFactory</name>
<implemented-interface>javax.jms.QueueConnectionFactory</implemented-interface>
<implemented-interface>javax.jms.TopicConnectionFactory</implemented-interface>
<connectionmanager>
<xa-transaction>
<transaction-caching/>
</xa-transaction>
<single-pool>
<max-size>10</max-size>
<blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds>
<match-one/>
</single-pool>
</connectionmanager>
<global-jndi-name>jms/ConnectionFactory</global-jndi-name>
<!--
<credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
-->
</connectiondefinition-instance>
</connection-definition>
</outbound-resourceadapter>
</resourceadapter>
<adminobject>
<adminobject-interface>javax.jms.Queue</adminobject-interface>
<adminobject-class>org.codehaus.activemq.message.ActiveMQQueue</adminobject-class>
<adminobject-instance>
<message-destination-name>jms/testQueue</message-destination-name>
<config-property-setting
name="PhysicalName">jms/testQueue</config-property-setting>
</adminobject-instance>
</adminobject>
</connector>
Re: Connect to JMS Queue from Servlet
Posted by Torsten Römer <to...@luniks.net>.
Oh, well...
I forgot the declarations in web.xml:
<resource-ref>
<res-ref-name>jms/ConnectionFactory</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-env-ref>
<resource-env-ref-name>jms/testQueue</resource-env-ref-name>
<resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
</resource-env-ref>
Now of course it works just fine!
Just wondering: When I set up a JDBC datasource in a Tomcat webapp
context, I can look it up without any declarations in web.xml, can
somebody explain me why?
Torsten
Torsten schrieb:
> Hello,
>
> I am trying to connect to a JMS queue from a method that I call from a
> servlet in a simple webapp.
>
> Both the queue and the webapp seems to have been deployed correctly and
> the webapp works so far, but when trying to look up the
> ConnectionFactory I get a javax.naming.NameNotFoundException.
>
> Below I'll paste my resource adapter XML and the relevant code, could
> somebody please tell me what I am doing wrong?
>
> Thanks in advance,
> Torsten
>
>
>
> Context init = new InitialContext();
> // Lookup below seems to succeed but...
> ctx = (Context)init.lookup("java:comp/env");
> // but this one fails: NameNotFoundException: jms/ConnectionFactory
> factory = (QueueConnectionFactory)ctx.lookup("jms/ConnectionFactory");
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector"
> version="1.5"
> configId="test/Queues"
> parentId="org/apache/geronimo/SystemJMS">
> <resourceadapter>
> <resourceadapter-instance>
> <resourceadapter-name>ActiveMQ RA</resourceadapter-name>
> <config-property-setting
> name="ServerUrl">tcp://localhost:61616</config-property-setting>
> <!-- config-property-setting
> name="UserName">user</config-property-setting -->
> <!-- config-property-setting
> name="Password">pass</config-property-setting -->
> <workmanager>
> <gbean-link>DefaultWorkManager</gbean-link>
> </workmanager>
> </resourceadapter-instance>
> <outbound-resourceadapter>
> <connection-definition>
>
> <connectionfactory-interface>javax.jms.ConnectionFactory</connectionfactory-interface>
>
> <connectiondefinition-instance>
> <name>jms/ConnectionFactory</name>
>
> <implemented-interface>javax.jms.QueueConnectionFactory</implemented-interface>
>
>
> <implemented-interface>javax.jms.TopicConnectionFactory</implemented-interface>
>
> <connectionmanager>
> <xa-transaction>
> <transaction-caching/>
> </xa-transaction>
> <single-pool>
> <max-size>10</max-size>
>
> <blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds>
> <match-one/>
> </single-pool>
> </connectionmanager>
>
> <global-jndi-name>jms/ConnectionFactory</global-jndi-name>
> <!--
> <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
>
> -->
> </connectiondefinition-instance>
> </connection-definition>
> </outbound-resourceadapter>
> </resourceadapter>
> <adminobject>
> <adminobject-interface>javax.jms.Queue</adminobject-interface>
>
> <adminobject-class>org.codehaus.activemq.message.ActiveMQQueue</adminobject-class>
>
> <adminobject-instance>
>
> <message-destination-name>jms/testQueue</message-destination-name>
> <config-property-setting
> name="PhysicalName">jms/testQueue</config-property-setting>
> </adminobject-instance>
> </adminobject>
>
> </connector>
>