当前位置:  开发笔记 > 编程语言 > 正文

通过JNDI使用ActiveMQ

如何解决《通过JNDI使用ActiveMQ》经验,为你挑选了1个好方法。

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


我有

    队列名为'example.A'.

    根据触及JNDI的ActiveMQ文档,如果我想通过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

我的错误在哪里?



1> BenM..:

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

你的代码应该是这样的:

Context context = new InitialContext();
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("ConnectionFactory");
Queue queue = (Queue) context.lookup("MyQueue");

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有