You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Molina sarah <mo...@yahoo.com> on 2016/01/30 17:44:36 UTC

JNDI lookup of topic failure

I am a new user. I am running ActiveMQ server with default settings in my
windows box. I am trying to run a simple msg publisher/subscriber program.
In my publisher program, I am creating a topic and then publishing to it
without any problem.
The code sample looks like this:

        Properties initialProperties = new Properties();
        initialProperties.put(InitialContext.INITIAL_CONTEXT_FACTORY,
                "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
        initialProperties.put(InitialContext.PROVIDER_URL,
                "tcp://localhost:61616");
        try {
            context = new InitialContext(initialProperties);
            factory = (TopicConnectionFactory) context
                    .lookup("ConnectionFactory");
            
            connection = factory.createTopicConnection();
            session = connection.createTopicSession(false,
                    TopicSession.AUTO_ACKNOWLEDGE);
            Topic topic = session.createTopic("MSGQUEUE");
            publisher = session.createPublisher(topic);
            TextMessage message = session.createTextMessage();
            message.setText("Hello world from publisher");
            connection.start();
            publisher.publish(message);
            System.out.println("Message has successfully sent...");
            connection.close();
            context.close();

        } catch (NamingException e) {
            e.printStackTrace();
        } catch (JMSException e) {
            e.printStackTrace();
        }

I can see in activemq console that it created the topic MSGQUEUE.

Now I am trying to lookup my MSGQUEUE from subscriber using the following
code:

       Properties initialProperties = new Properties();
        initialProperties.put(InitialContext.INITIAL_CONTEXT_FACTORY,
                "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
        initialProperties.put(InitialContext.PROVIDER_URL,
                "tcp://localhost:61616");
        try {
            context = new InitialContext(initialProperties);
            factory = (TopicConnectionFactory) context
                    .lookup("ConnectionFactory");
            connection = factory.createTopicConnection();
            session = connection.createTopicSession(false,
                    TopicSession.AUTO_ACKNOWLEDGE);
            Topic topic = (Topic) context.lookup("MSGQUEUE");
            subscriber = session.createSubscriber(topic);
            subscriber.setMessageListener(this);
            connection.start();
            ...
            ...

It fails with the NamingExcention as below:
javax.naming.NameNotFoundException: MSGQUEUE
	at
org.apache.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:235)
	at javax.naming.InitialContext.lookup(InitialContext.java:417)
	at com.example.messageq.Receiver.subscribeMessage(Receiver.java:39)
	at com.example.messageq.Receiver.main(Receiver.java:77)

Instead of context.lookup, if I use session.createTopic just like publisher
code, it works fine.
What is the reason it can not see the topic? I must be misisng something
simple.
Any help would be appreciated.



--
View this message in context: http://activemq.2283324.n4.nabble.com/JNDI-lookup-of-topic-failure-tp4706684.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.