其實我使用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霍爾特的答案,除了連接工廠創建,你必須使用:
QueueConnectionFactory connFactory = (QueueConnectionFactory) initContext.lookup("ConnectionFactory");
而且你不需要創建隊列是否有部署一些
Queue queue = (Queue) initContext.lookup("queueName");
上面的所有代碼都使用JBoss 4.2.2 GA和JBossMQ進行了測試(JBossMQ是,如果我沒錯的話,在4.2.3中用JBoss消息代替)。
嗨文森特 - 我還是建議在JNDI中彈出QueueConnectionFactory,Queue等,如果你是服務器端的話,那麼你可以刪除SonicMQ JMS驅動程序的編譯時間依賴關係。 – 2009-06-24 14:33:53