/** * Demo -- this is the "remote" interface of * our enterprise JavaBean, it * defines only one simple method called * demoSelect(). As this is meant to be * the simplest of examples demoSelect() * never goes to a database, it just * returns a string * * Note: The implementation of this interface is * provided by the container tools * but the demoSelect() method and any * other methods in this interface * will need to have equivalent * implementations in the demobean.java * which is supplIEd by the bean writer * ..i.e., you! */ package ejb.demo; import java.rmi.RemoteException; import java.rmi.Remote; import Javax.ejb.*; public interface Demo extends EJBObject, Remote { // NB this simple example does not even do a // lookup in the database public String demoSelect() throws RemoteException; }
/** * DemoHome.java - This is the Home interface it must * extend javax.ejb.EJBHome and define one or more * create() methods for the bean. * * Note: The implementation of this interface is * generated by the container tools. */ package ejb.demo; import javax.ejb.*; import java.rmi.Remote; import java.rmi.RemoteException; import Java.util.*; /** * This interface is extremely simple it declares only * one create method. */ public interface DemoHome extends EJBHome { public Demo create() throws CreateException, RemoteException; }
/** * DemoBean -- This is implemented by the EnterPrise * Bean author This class must extend * javax.ejb.SessionBean and implement * the methods in this interface as well as providing * the implementation of the business methods. * */ package ejb.demo; import javax.ejb.*; import java.io.Serializable; import java.util.*; import java.rmi.*; public class DemoBean implements SessionBean { static final boolean verbose = true; private transient SessionContext ctx; private transient PropertIEs props; // Implement the methods in the SessionBean // interface public void ejbActivate() { if (verbose) System.out.println("ejbActivate called"); } public void ejbRemove() { if (verbose) System.out.println("ejbRemove called"); } public void ejbPassivate() { if (verbose) System.out.println("ejbPassivate called"); } /** * Sets the session context. * * @param SessionContext */ public void setSessionContext(SessionContext ctx) { if (verbose) System.out.println("setSessionContext called"); this.ctx = ctx; props = ctx.getEnvironment(); } /** * This method corresponds to the create method in * the home interface DemoHome.Java. * The parameter sets of the two methods are * identical. When the clIEnt calls * DemoHome.create(), the container allocates an * instance of the EJBean and calls ejbCreate(). */ public void ejbCreate () { if (verbose) System.out.println("ejbCreate called"); } /** * **** HERE IS THE BUSINESS LOGIC ***** * Do the demoSelect() but don't even go to * the database in this eg but instead just * return a String. * The really BIG thing to notice here is that * this is the only code we have invented at all * the rest of the code has been declarations * or simply implementing methods which are * part of the EJB interfaces and in this example * are not even used. */ public String demoSelect() throws RemoteException { return("hello world"); } }