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