problem with microcontainer-alpha9 while testing ejb3s. cann
mmarcom Sep 24, 2006 1:42 PMhello all,
i have just upgraded jboss ejb3 to rc9 release, so ihav updated also the embeddable alpha to rc9.
i am running junit test by starting jboss microcontainer in my junit (testNG) test
i am currently using maven2... btw here' smy pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ejbJ2ME</groupId>
<artifactId>ejbJ2ME</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>ejbJ2ME</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>5.1</version>
<scope>test</scope>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>j2meCore</groupId>
<artifactId>J2MECore</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>microcontainer</groupId>
<artifactId>hibernate-all</artifactId>
<version>rc9</version>
<scope>system</scope>
<systemPath>${basedir}\lib\hibernate-all-rc9.jar</systemPath>
</dependency>
<dependency>
<groupId>microcontainer</groupId>
<artifactId>jboss-ejb3-all</artifactId>
<version>rc9</version>
<scope>system</scope>
<systemPath>${basedir}\lib\jboss-ejb3-all-rc9.jar</systemPath>
</dependency>
<dependency>
<groupId>microcontainer</groupId>
<artifactId>jcainflow</artifactId>
<version>rc9</version>
<scope>system</scope>
<systemPath>${basedir}\lib\jcainflow-rc9.jar</systemPath>
</dependency>
<dependency>
<groupId>microcontainer</groupId>
<artifactId>thirdparty-all</artifactId>
<version>rc9</version>
<scope>system</scope>
<systemPath>${basedir}\lib\thirdparty-all-rc9.jar</systemPath>
</dependency>
<dependency>
<groupId>microcontainer</groupId>
<artifactId>jms-ra</artifactId>
<version>rc9</version>
<scope>system</scope>
<systemPath>${basedir}\lib\jms-ra-rc9.jar</systemPath>
</dependency>
<dependency>
<groupId>microcontainer</groupId>
<artifactId>ehcache</artifactId>
<version>1.2</version>
<scope>system</scope>
<systemPath>${basedir}\lib\ehcache-1.2.jar</systemPath>
</dependency>
<dependency>
<groupId>dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<testSourceDirectory>src/test</testSourceDirectory>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<includes>
<include>*.*</include>
</includes>
</testResource>
</testResources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!--<version>2.8-SNAPSHOT</version>-->
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
</plugins>
</pluginManagement>
</build>
<pluginRepositories>
<pluginRepository>
<id>tapestry.javaforge</id>
<url>http://howardlewisship.com/repository</url>
</pluginRepository>
</pluginRepositories>
</project>
i have a base junit test which is supposed to statup EJB3 container
here's code
package example1;
import java.util.Hashtable;
import org.jboss.ejb3.embedded.*;
import org.testng.annotations.Configuration;
import org.testng.annotations.ExpectedExceptions;
import org.testng.annotations.Test;
import junit.framework.*;
import junit.extensions.*;
import javax.naming.*;
/**
* Boots the JBoss Microcontainer with an EJB3 configuration.
* <p>
* You can also use this class to lookup managed beans from JNDI.
*
* @author christian.bauer@jboss.com
*/
public class EJB3Container {
private static InitialContext initialContext;
private EJB3StandaloneDeployer deployer;
@Configuration(groups = "integration.ejb3", beforeTest = true)
public void startup() {
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 = new EJB3StandaloneDeployer();
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);
}
}
@Configuration(groups = "integration.ejb3", afterTest = true)
public void shutdown() {
try {
System.err.println("---- Invoking EJB3.shutdown..");
deployer.stop();
deployer.destroy();
EJB3StandaloneBootstrap.shutdown();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
public static Object lookup(String beanName) {
try {
return initialContext.lookup(beanName);
} catch (NamingException ex) {
throw new RuntimeException("Couldn't lookup: " + beanName, ex);
}
}
}
i have a stateless session bean, here's excerpt of class
import com.mm.j2me.core.Agency;
import com.mm.j2me.core.JobApplication;
import com.mm.j2me.core.Opportunity;
import javax.persistence.*;
import javax.ejb.*;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
@Stateless
@Local ( {FacadeIF.class})
public class TestFacade implements FacadeIF {
@PersistenceContext
EntityManager em;
..
i m trying to look it up in my tests usign following code:
TestFacade sessionFacade = (TestFacade) EJB3Container.lookup("TestFacade/local");
it results in a NUllPointerException.........
can anyone help me out in trying to find why i cannot lookup my EJB?
am i starting EJB3 container in the wrong way?