Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-5355

Problem in making JNDI connection - Apachive ActiveMQ 5.10.0

    XMLWordPrintableJSON

Details

    • Task
    • Status: Closed
    • Major
    • Resolution: Invalid
    • 5.10.0
    • 5.10.0
    • Pool
    • O.S.: Windows 8
      Apache 5.10.0 release

    Description

      I am not create a jndi connection from my java program despite specifying all the connection parameters in the jndi.properties and activemq.xml:

      I have done the configuration of jndi.properties file as follows:
      java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
      java.naming.provider.url=tcp://localhost:61616
      java.naming.security.principal=system
      java.naming.security.credentials=manager

      1. use the following property to configure the default connector
        java.naming.provider.url = vm://localhost

      #connectionFactoryNames = TopicCF
      #topic.topic1 = jms.topic1

      connectionFactoryNames = QueueCF
      queue.LoanRequestQ = jms.LoanRequestQ
      queue.LoanResponseQ = jms.LoanResponseQ

      Added the following in activemq.xml:
      <destinations>
      <! – topic name="topic1" physicalName="jms.topic1" / -->
      <queue name="LoanRequestQ" physicalName="jms.LoanRequestQ" />
      <queue name="LoanResponseQ" physicalName="jms.LoanResponseQ" />
      </destinations>

      Now, in my Java program, I have the QLender class and I have the following statements:

      Context ctx = new InitialContext();
      ConnectionFactory qCFactory = (ConnectionFactory)ctx.lookup("QueueCF");

      I get the following error:
      javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
      at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
      at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
      at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:344)
      at javax.naming.InitialContext.lookup(InitialContext.java:411)
      at ch04.p2p.QLender.<init>(QLender.java:34)
      at ch04.p2p.QLender.main(QLender.java:134)

      Further I enhanced the program to make a set environment parameters:
      Hashtable env = new Hashtable();
      env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
      env.put(Context.PROVIDER_URL, "http://localhost:61616");
      env.put(Context.SECURITY_PRINCIPAL, "system");
      env.put(Context.SECURITY_CREDENTIALS, "manager");
      Context ctx = new InitialContext(env);
      ConnectionFactory qCFactory = (ConnectionFactory)ctx.lookup("QueueCF");

      On compiling I get the following error:
      javax.naming.NameNotFoundException: QueueCF
      at org.apache.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:235)
      at javax.naming.InitialContext.lookup(InitialContext.java:411)
      at ch04.p2p.QLender.<init>(QLender.java:32)
      at ch04.p2p.QLender.main(QLender.java:132)

      Attachments

        1. 204941989715941.jpg
          197 kB
          Jessica

        Activity

          People

            Unassigned Unassigned
            saurabh_d48 Saurabh Thapar
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: