javax.naming.NameNotFoundException: mdbtest not bound
pepelara Feb 8, 2009 7:45 AMHello,
I am developing an EJB3 MDB in Eclipse Ganymede RS1
against JBoss 4.2.2 GA.
At deployment time I get the following exception,
13:18:28,493 INFO [EARDeployer] Init J2EE application: file:/C:/jboss-4.2.2.GA/server/default/deploy/ProducerConsumerClientEAR.ear 13:18:28,805 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.mdb.ConsumerContainer 13:18:28,805 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=ProducerConsumerClientEAR.ear,jar=ConsumerMDB.jar,name=QueueTestConsumer,service=EJB3 with dependencies: 13:18:29,007 INFO [EJBContainer] STARTED EJB: test.mdb.QueueTestConsumer ejbName: QueueTestConsumer 13:18:29,007 WARN [MessagingContainer] Could not find the queue destination-jndi-name=queue/mdbtest 13:18:29,007 WARN [MessagingContainer] destination not found: queue/mdbtest reason: javax.naming.NameNotFoundException: mdbtest not bound 13:18:29,007 WARN [MessagingContainer] creating a new temporary destination: queue/mdbtest 13:18:29,023 INFO [mdbtest] Bound to JNDI name: queue/mdbtest 13:18:29,117 INFO [EJB3Deployer] Deployed: file:/C:/jboss-4.2.2.GA/server/default/tmp/deploy/tmp5377057139345978599ProducerConsumerClientEAR.ear-contents/ConsumerMDB.jar 13:18:29,148 INFO [EARDeployer] Started J2EE application: file:/C:/jboss-4.2.2.GA/server/default/deploy/ProducerConsumerClientEAR.ear
This is my code,
#1 The producer
package test.mdb; import org.jboss.annotation.ejb.Producer; @Producer public interface QueueTestRemote { public void method1(String msg, int num); }
#2 The consumer (the bean)
package test.mdb; import javax.ejb.ActivationConfigProperty; import org.jboss.annotation.ejb.Consumer; /** * Message-Driven Bean implementation class for: QueueTestConsumer * */ @Consumer( activationConfig = { @ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty( propertyName="destination", propertyValue="queue/mdbtest") }) public class QueueTestConsumer implements QueueTestRemote { /** * Default constructor. */ public QueueTestConsumer() { // TODO Auto-generated constructor stub } @Override public void method1(String msg, int num) { // TODO Auto-generated method stub System.out.println("method1(" + msg + ", " + num + ")"); } }
#3 And the client
package test.mdb; import javax.naming.InitialContext; import org.jboss.ejb3.mdb.ProducerObject; import org.jboss.ejb3.mdb.ProducerManager; public class Client { /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub InitialContext ctx = new InitialContext(); QueueTestRemote tester = (QueueTestRemote)ctx.lookup(QueueTestRemote.class.getName()); ProducerObject po = (ProducerObject)tester; ProducerManager manager = (ProducerManager)po.getProducerManager(); manager.connect(); // internally create a JMS connection try { tester.method1("hello world", 55); } finally { manager.close(); // clean up the JMS connection } } }
And in runtime I get another exception,
Exception in thread "main" 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(Unknown Source) at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source) at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source) at javax.naming.InitialContext.lookup(Unknown Source) at test.mdb.Client.main(Client.java:16)
And I do not know what is going wrong.
Thanks in advance,
Jose Alvarez de Lara