其实我用的是 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 消息取代)。