Step #4: Write the Enterprise JavaBeanTM Class
This is where the coding of the application (business logic) is done. Up until now, all we have done is to declare interfaces that the container tools will generate code for, but here is where the functionality of the JavaBean is coded.
One important thing to notice about our bean implementation is just how little code we have had to author. Most of this code is simply implementing methods from the EJB specification. It is easy to envisage templates and tools which do most of the implementation work for us. This is very comparable to the way tools have evolved for the GUI beans environment.
For our DemoBean EJB DemoBean.java looks like this (source):
/**
* 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");
}
}
|