Title: Structure of Enterprise Java Beans
1Structure of Enterprise Java Beans
2Introduction
- Main goal of Enterprise Java Bean (EJB)
architecture is to free the application developer
from having to deal with the system level aspects
of an application. This allows the bean developer
to focus solely on the logic of the application.
3Parts of EJB
- EJB class that implements the business methods
and life cycle methods uses other helper classes
and libraries to implement. - Client-view API consists of EJB home interface
and remote interface. - Home interface controls life cycle create,
remove, find methods - Remote interface to invoke the EJB object methods
4Parts of EJB (contd.)
- Deployment Descriptor XML document for bean
assembler and deployer - A declaration about EJB environment needed for
customizing the bean to the operating
environment. - Container Runtime services include transactions,
security,distribution,load balancing,
multithreading, persistence, failure recovery,
resource pooling, state amnagement, clustering..
5Naming Convention
- EJB class is a descriptive name of the business
entity or process with the word Bean appended.
Ex AccountBean - Home interface is same as business entity name
with the word Home appended. Ex AccountHome - Remote interface is just the name of the entity.
Ex Account - The name of the entire EJB (reference in
deployment descriptor) is same as the enity name
with EJB appended. Ex AccountEJB
6Enterprise Bean Parts
ltltHome Interfacegtgt AccountHome
ltltRemote Interfacegtgt Account
create() find() remove()
debit() credit() getBalance()
ltltEnterrpise Bean classgt AccountBean
Deployment Descriptor
name AccountEJB class AccountBean home
AccountHome remote Account type
Entity transaction required ..
ejbCreate() ejbFind() ejbRemove() debit() credit()
getBalance()
7AccountHome Interface
import java.rmi.RemoteException import
javax.ejb.CreateException import
javax.ejb.FinderException import
java.util.Collection public interface
AccountHome extends javax.ejb.EJBHome //create
methods Account create (String lastName, String
firstName) throws RemoteException,
CreateException,
BadNameException Account create (String
lastName) throws RemoteException,
CreateException // find methods Account
findByPrimaryKey (AccountKey primaryKey) throws
RemoteException,
FinderException Collection findInActive(Date
sinceWhen) throws RemoteException,
FinderException, BadDateException
8EJBHome Interface
import java.rmi.RemoteException public
interface EJBHome extends java.rmi.Remote void
remove(Handle handle) throws RemoteException,
RemoveException void remove(Object primaryKey)
throws RemoteException, RemoveException
EJBMetaData getEJBMetaData( ) throws
RemoteException HomeHandle getHomeHandle()
throws RemoteException
9Account Interface
import java.rmi.RemoteException public
interface Account extends javax.ejb.EJBObject
BigDecimal getBalance() throws
RemoteException void credit(BiGDecimal amount)
throws RemoteException Void debit(BigDecimal
amount) throws RemoteException,
InSufficientFundsException
10EJBObject Interface
import java.rmi.RemoteException public
interface EJBObject extends java.rmi.Remote
public EJBHome getEJBHome() throws
RemoteException public Object getPrimaryKey()
throws RemoteException public void remove()
throws RemoteException, RemoveException Public
Handle getHandle() throws RemoteException Boolean
isIdentical (EJBObject obj2) throws
RemoteException
11AccountBean class
public class AccountBean implements
javax.ejb.EntityBean // life cycle methods from
home interface public AccountKey ejbCreate
(String latName, String firstName) throws
public AccountKey ejbCreate(String lastName)
throws public AccountKey ejbFindByPrimaryKey(
AccountKey primarykey) Public Collection
ejbFindInactive( Data sinecWhen).. //
business methods from remote interface public
BigDecimal getBalance() . public void
credit(BigDecimal amt) Public void
debit(BigDecimal amt) throws InsufficientFundExcep
tion . // container callbacks from EntityBean
container public ejbRemove( ) throws
RemoveException public void
setEntityContext(EntityContext ec) public
unsetEntityContext(EntityContext ec) public
void ejbActivate() public void ejbLoad()
. public void ejbStore() .
12Deployment Descriptor
ltentity-beangt ltejb-namegtAccountEJBlt/ejb-name
gt lthomegtcom.wombat.AccopuntHomelt/homegt
ltremotegtcom.wombat.Accountlt/remotegt
ltejb-classgtcom.wombat.AccountBeanlt/ejb-classgt
ltpersistence-typegtBeanlt\persistence-typegt
ltprimary-key-classgtcom.wombat.AccountKeylt/primary-
kay-classgt lt/entity-beangt ltcontainer-transactio
ngt ltmethodgt ltejb-namegtAcoountEJBlt/ejb-n
amegt ltmethod-namegtlt/method-namegt
lt/methodgt lttrans-attributegtrequiredlt/trans-att
ributegt lt/container-transactiongt