【发布时间】:2010-10-01 23:59:29
【问题描述】:
我正在尝试使用 JNDI 创建与 ActiveMQ 的简单连接。
我有
名为“example.A”的队列。
-
根据ActiveMQ documentation touching JNDI,如果我想通过 JNDI 使用连接工厂和队列(主题),我必须将 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 和连接工厂但我不能提供额外的属性。这样看来队列端点没有定义。如果我使用动态队列/测试,它可以工作,但它是否也可以解决静态命名的目的地?