2 Replies Latest reply on Sep 24, 2006 1:57 PM by Marco

    Problem with testing EJB3-rc9

    Marco Novice

      hi 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