ejbHome( )
CMP and
BMP entity beans can declare home
methods
that perform operations related to the
EJB component but that are not specific to an entity bean instance. A
home method must have a matching implementation in the bean class
with the signature
ejbHome<
METHOD-NAME
>( ).
For example, the Cruise EJB might define a home method that calculates the total revenue in bookings for a specific Cruise:
public interface CruiseHomeLocal extends javax.ejb.EJBLocalHome {
public CruiseLocal create(String name, ShipLocal ship);
public double totalReservationRevenue(CruiseLocal cruise);
}Every home method declared by the home interfaces must have a
corresponding
ejbHome<
METHOD-NAME
>( ) in the bean class. For example, the
CruiseBean class would have an
ejbHomeTotalReservationRevenue( ) method, as shown
in the following code:
public abstract class CruiseBean implements javax.ejb.EntityBean {
public Integer ejbCreate(String name, ShipLocal ship) {
setName(name);
}
...
public double ejbHomeTotalReservationRevenue(CruiseLocal cruise) {
Set reservations = ejbSelectReservations(cruise);
Iterator it = reservations.iterator( );
double total = 0;
while(it.hasNext( )) {
ReservationLocal res = (ReservationLocal)it.next( );
total += res.getAmount( );
}
return total;
}
public abstract ejbSelectReservations(CruiseLocal cruise);
...
}The ejbHome( ) methods execute without an identity
within the instance pool. This is why
ejbHomeTotalReservationRevenue( ) required that a
CruiseLocal EJB object reference ...