[jboss-user] [Messaging, JMS & JBossMQ] - Re: connection factory to remote queue
dlgrasse
do-not-reply at jboss.com
Tue Jul 10 15:40:34 EDT 2007
Finally.
After looking at the FAQ, Wiki, and other useless documentation, the answer was indeed found in the JNDI forum - in a post: http://www.jboss.com/index.html?module=bb&op=viewtopic&t=112107.
Forget all those <tx-connection-factory> and JMSProvider tags in the links offered earlier. (If you can get them to work for you, I'd love to see the exact configuration. But as far as I'm concerned the examples are incomplete at best, and incorrect at worst.) Here's how I got it to work for me.
Suppose you have JBoss server configured with a Queue running on it. Call this ServerQ, and the queue name is Q.
Now you want to connect to it remotely. If you were to do this from a stand-alone app, the answer is pretty simple - include 3 Properties values, which are easily provided via a jndi.properties file in the classpath.
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
| java.naming.provider.url=jnp://<ServerQ>:1099
| java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
And from your code you use ConnectionFactory jndi name "ConnectionFactory" and queue jndi ref "queue/Q". I've used that technique several times successfully.
You would expect that if you were asking how to do that very thing from within JBoss the answer would be pretty much that very thing - bind a jndi name to a remote connection factory - and nothing else. And in fact the solution that worked for me is exactly that. Add the following tag to your jms/jms-ds.xml file.
<mbean code='org.jboss.naming.ExternalContext'
| name='jboss.jndi:service=ExternalContext,jndiName=<some jndi ref>'
| >
| <attribute name='JndiName'><some jndi ref></attribute>
| <attribute name='Properties'>
| java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
| java.naming.factory.url.pkgs=org.jnp.interfaces
| java.naming.provider.url=<ServerQ>:1099
| </attribute>
| <depends>jboss:service=Naming</depends>
| </mbean>
Then from your code you reference the ConnectionFactory with jndi name "<some jndi ref>/ConnectionFactory" and the queue with jndi name "<some jndi ref>/queue/Q".
dlgrasse
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4062657#4062657
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4062657
More information about the jboss-user
mailing list