1 Reply Latest reply on Sep 24, 2006 1:56 PM by mmarcom

    problem with microcontainer-alpha9 while testing ejb3s. cann

    mmarcom

      hello 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?

        • 1. Re: problem with microcontainer-alpha9 while testing ejb3s.
          mmarcom

          hello,
          looklike i m ok now..... i forgot few VERY important lines of code
          while starting ejb3 container

          deployer = EJB3StandaloneBootstrap.createDeployer();
          deployer.getArchivesByResource().add("META-INF/persistence.xml");
          deployer.create();
          deployer.start();

          in fact, it turned out that getArchivesByResources made the difference...

          thanks and regards
          marco