На самом деле я использую JBoss 4, и JNDI не сложен в использовании.
Прежде всего вы должны знать, где работает ваш JNDI.
В моем JBoss (conf \ jboss-service.xml) у меня есть:
<mbean code="org.jboss.naming.NamingService" name="jboss:service=Naming" xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">
...
<attribute name="Port">7099</attribute>
...
</mbean>
Это важно, это порт, к которому вы хотите подключиться.
Теперь вы можете легко подключиться к JNDI, используя этот код:
Hashtable<String, String> contextProperties = new Hashtable<String, String>();
contextProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
contextProperties.put(Context.PROVIDER_URL, "jnp://localhost:7099");
InitialContext initContext = new InitialContext(contextProperties);
Теперь, когда у вас есть контекст, он очень похож на ответ @Nick Holt, кроме создания фабрики соединений, вы должны использовать:
QueueConnectionFactory connFactory = (QueueConnectionFactory) initContext.lookup("ConnectionFactory");
Также вам не нужно создавать очередь, если там развернуто какое-то
Queue queue = (Queue) initContext.lookup("queueName");
Весь приведенный выше код был протестирован с JBoss 4.2.2 GA и JBossMQ (JBossMQ, если я правильно понял, был заменен в 4.2.3 на обмен сообщениями JBoss).