Environment:
O.S.: Windows 8
Apache 5.10.0 release
I am not able to 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 of 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
O.S.: Windows 8
Apache 5.10.0 release
I am not able to 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 of 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