0

我试图将消息发布到 activemq。但我在我的 java 应用程序中遇到了一个命名异常。这是下面的代码

 Properties props = new Properties();
    props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
    props.setProperty(Context.PROVIDER_URL,"tcp://localhost:61616");
    InitialContext ctx = new InitialContext(props);
     // get the initial context
     // InitialContext ctx = new InitialContext();
     QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");        
     // create a queue connection
       QueueConnection queueConn = connFactory.createQueueConnection();                                                       
       // lookup the queue object
       Queue queue = (Queue) ctx.lookup("nixon");

我收到三个警告加上以下一个这样的错误

 Exception in thread "main" javax.naming.NameNotFoundException: nixon
at org.apache.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:235)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.youtube.rest2.status.ProducerNewClient.main(ProducerNewClient.java:38)

谁能告诉我为什么会收到此错误..?

4

1 回答 1

4

您很可能会收到此错误,因为您没有在 JNDI 配置文件中配置目标。您可以将这些定义添加到您的文件中,也可以使用 ActiveMQ 的动态目标功能。

对于基于 JNDI 的程序的最简单配置,有 2 个动态上下文,如下所示

dynamicQueues
dynamicTopics

它允许您使用 JNDI 查找队列和主题,而无需任何配置。

例如,如果您使用以下名称查找 JNDI dynamicQueues/FOO.BAR

你会得到一个名为“FOO.BAR”的 ActiveMQQueue。

阅读ActiveMQ 站点上的JNDI 文档以了解更多信息。

于 2013-11-06T16:48:29.800 回答