Problem with testing EJB3-rc9
mmarcom Sep 24, 2006 1:14 PMhi all,
i am trying to test my ejb3 ejbs by starting the jboss microcontainer
i am using release rc9, and its related microcontainer..
here's my persistence.xml
<!-- Persistence file for EJB3 application --> <persistence> <persistence-unit name="j2me"> <jta-data-source>java:/DefaultDS</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" </persistence-unit> </persistence>
i have this base test class which starts up jboss microcontainer (only relevant code
try { System.err.println("---- bootstrapping EJB3 container...."); // Boot the JBoss Microcontainer with EJB3 settings, loads ejb3-interceptors-aop.xml EJB3StandaloneBootstrap.boot(null); System.err.println("...... deploying embedded-jboss-beans...."); EJB3StandaloneBootstrap.scanClasspath(); // Deploy everything we got deployer.setKernel(EJB3StandaloneBootstrap.getKernel()); deployer.create(); System.err.println("...... deployer created...."); deployer.start(); System.err.println("...... deployer started...."); Hashtable props = new Hashtable(); props.put("java.naming.factory.initial", "org.jnp.interfaces.LocalOnlyContextFactory"); props.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); // Create InitialContext from jndi.properties initialContext = new InitialContext(props); System.err.println("---- end of bootstrapping EJB3 container....InitialContext is:"); } catch (Exception ex) { ex.printStackTrace(); throw new RuntimeException(ex); } }
i have following session ejb
@Stateless(name="facade") @Local ( {FacadeIF.class}) public class TestFacade implements FacadeIF { @PersistenceContext EntityManager em; public void deleteAgency(Agency agency) { // TODO Auto-generated method stub Query query = getQuery("findAgencyById"); query.setParameter("id", agency.getId()); Agency agencyToDelete = (Agency)query.getSingleResult(); em.remove(agencyToDelete); } public void deleteJobApplication(JobApplication app) { Query query = getQuery("findJAById"); query.setParameter("id", app.getId()); JobApplication jaToDelete = (JobApplication)query.getSingleResult(); em.remove(jaToDelete); } ....
In one of my tests i am trying to lookup the ejb
public void testInsertAgency() throws Exception { System.err.println("Testing insertion of an Agency.."); try { TestFacade sessionFacade = (TestFacade) EJB3Container.lookup("facade/local"); } catch(Exception e) { System.err.println("an exception occurred..."); e.printStackTrace(); } }
but htis result sin following excepiton
java.lang.RuntimeException: Couldn't lookup: facade/local at example1.EJB3Container.lookup(EJB3Container.java:101) at example1.AgencyTest.testInsertAgency(AgencyTest.java:33) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:552) at org.testng.internal.Invoker.invokeMethod(Invoker.java:411) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:785) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:114) at org.testng.TestRunner.privateRun(TestRunner.java:693) at org.testng.TestRunner.run(TestRunner.java:574) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:241) at org.testng.SuiteRunner.run(SuiteRunner.java:145) at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:901) at org.testng.TestNG.runSuitesLocally(TestNG.java:863) at org.apache.maven.surefire.testng.TestNGExecutor.executeTestNG(TestNGE xecutor.java:78) at org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXml TestSuite.java:76) at org.apache.maven.surefire.Surefire.run(Surefire.java:129) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(Su refireBooter.java:262) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.j ava:787) Caused by: javax.naming.NameNotFoundException: facade not bound at org.jnp.server.NamingServer.getBinding(NamingServer.java:529) at org.jnp.server.NamingServer.getBinding(NamingServer.java:537) at org.jnp.server.NamingServer.getObject(NamingServer.java:543) at org.jnp.server.NamingServer.lookup(NamingServer.java:267) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:626) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:588) at javax.naming.InitialContext.lookup(Unknown Source)
could anyone tell me what's the problem?
it looks like my session ejb is not being deployed..... any reasons why?
am i using the wrong jndi name to lookup the ejb?
thanks ina dvance and r egards
marco