Porting EJB2.1 Statefull Session Bean to EJB3
adrian_p Jun 29, 2005 4:10 PMHello,
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