我試圖創建使用JNDI簡單地與ActiveMQ連接。 通過JNDI使用ActiveMQ
我
名爲 'example.A' 隊列。
根據ActiveMQ documentation touching JNDI,如果我想通過JNDI使用ConectionFactories和Queues(Topics),我必須將jndi.properties文件放在我的類路徑中。據我所知,activeMQ類路徑默認是%activemq%/ conf目錄。我沒有改變它。 所以我有這個屬性對我的隊列:
queue.MyQueue = example.A
我已經創建了ActiveMQ的Java客戶端類,使用如下JNDI:
Properties jndiParameters = new Properties() ; jndiParameters.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory"); jndiParameters.put(Context.PROVIDER_URL, "tcp://localhost:61616"); Context context = new InitialContext(jndiParameters); ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("ConnectionFactory"); Queue queue = (Queue) context.lookup("MyQueue");
但它找不到我的隊列,它會拋出異常:javax.naming.NameNotFoundException:MyQueue
我的錯誤在哪裏?
我有一個類似的問題,我可以配置jndi url和連接工廠,但我無法提供其他屬性。這樣看起來Queue端點沒有被定義。如果我使用dynamicQueue/Test,它可以工作,但是是否也可以處理靜態命名的目標? – eckes 2017-02-16 18:25:46