3 Replies Latest reply on Jun 30, 2005 2:43 PM by Bill Burke

    Porting EJB2.1 Statefull Session Bean to EJB3

    Adrian Pitulac Newbie

      Hello,

      I'm currently trying to port some tutorial bean into EJB3. I have to mention that i'm a beginner.

      The bean i want to port is showing the instantiate, pasivate, activate mechanism in statefull session beans.

      It's a very simple bean and client... My problem is related to ejbCreate method and it's related create method in old EJB2.1 home interface.
      I don't know how to do this in EJB3. I've looked everywhere. Also i've read a couple of times the referring section in EJB3 Public Review Core Documentation but i've found nothing.

      Here's the code i want to port:

      CountHome.java

      package examples;
      import javax.ejb.*;
      import java.rmi.RemoteException;
      
      public interface CountHome extends EJBHome {
      
       Count create(int val) throws RemoteException, CreateException;
      }
      


      Count.java

      package examples;
      
      import javax.ejb.*;
      import java.rmi.RemoteException;
      
      public interface Count extends EJBObject {
       public int count() throws RemoteException;
      }
      



      CountBean.java
      package examples;
      import javax.ejb.*;
      
      public class CountBean implements SessionBean {
      
       public int val;
      
       public int count() {
       System.out.println("count()");
       return ++val;
       }
      
       public void ejbCreate(int val) throws CreateException {
       this.val = val;
       System.out.println("ejbCreate()");
       }
      
       public void ejbRemove() {
       System.out.println("ejbRemove()");
       }
      
       public void ejbActivate() {
       System.out.println("ejbActivate()");
       }
      
       public void ejbPassivate() {
       System.out.println("ejbPassivate()");
       }
      
       public void setSessionContext(SessionContext ctx) {
       System.out.println("setSessionContext()");
       }
      }




      CountClient.java
      package examples;
      
      import javax.ejb.*;
      import javax.naming.*;
      import java.util.Properties;
      
      
      public class CountClient {
      
       public static final int noOfClients = 3;
      
       public static void main(String[] args) {
      
       try {
      
       Properties props = System.getProperties();
      
       Context ctx = new InitialContext(props);
       CountHome home = (CountHome)javax.rmi.PortableRemoteObject.narrow(ctx.lookup("CountHome"), CountHome.class);
      
       Count count[] = new Count[noOfClients];
      
       int countVal = 0;
       System.out.println("Instantiating beans...");
       for (int i=0; i < noOfClients; i++) {
       count = home.create(countVal);
       countVal = count.count();
       System.out.println(countVal);
       Thread.sleep(500);
       }
      
       System.out.println("Calling count() on beans...");
       for (int i=0; i < noOfClients; i++) {
       countVal = count.count();
       System.out.println(countVal);
       Thread.sleep(500);
       }
       for (int i=0; i < noOfClients; i++) {
       count.remove();
       }
       } catch (Exception e) {
       e.printStackTrace();
       }
       }
      }



      I hope someone can help me with this...

      Thanks a lot in advance...
      Adrian