0

メッセージを activemq に発行しようとしましたが、Java アプリケーションで 1 つの命名例外が発生しています。ここにコードが続きます

 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");

このような 3 つの警告と 1 つ以下のエラーが表示されます

 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 に答える