通过 JNDI 使用 ActiveMQ

2023-11-22

我正在尝试使用 JNDI 创建与 ActiveMQ 的简单连接。


I have
  1. 名为“example.A”的队列。

  2. 根据ActiveMQ 文档涉及 JNDI,如果我想通过 JNDI 使用 ConectionFactories 和队列(主题),我必须将 jndi.properties 文件放在我的类路径上。据我了解,activeMQ 类路径默认为 %activemq%/conf 目录。我没有改变它。 所以我的队列有这个属性:

    队列.MyQueue = 示例.A

  3. 我为 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

我的错误在哪里?


问题在于您显式创建属性并将它们传递到 InitialContext 构造函数中。这意味着类路径上的 jndi.properties 将不会被读取。

你的代码应该是这样的:

Context context = new InitialContext();
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("ConnectionFactory");
Queue queue = (Queue) context.lookup("MyQueue");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 JNDI 使用 ActiveMQ 的相关文章

随机推荐