| Q: |
What
are the callback methods in Entity beans?
|
| A: |
The
bean class defines create methods that
match methods in the home interface and
business methods that match methods in
the remote interface. The bean class also
implements a set of callback methods that
allow the container to notify the bean
of events in its life cycle. The callback
methods are defined in the javax.ejb.EntityBean
interface that is implemented
by all entity beans.The EntityBean interface
has the following definition. Notice that
the bean class implements these methods.
| public
interface javax.ejb.EntityBean { |
| |
public
void setEntityContext();
public void unsetEntityContext();
public void ejbLoad();
public void ejbStore();
public void ejbActivate();
public void ejbPassivate();
public void ejbRemove(); |
| } |
|
The setEntityContext()
method provides the bean with an interface
to the container called the EntityContext.
The EntityContext interface contains methods
for obtaining information about the context
under which the bean is operating at any
particular moment. The EntityContext interface
is used to access security information
about the caller; to determine the status
of the current transaction or to force
a transaction rollback; or to get a reference
to the bean itself, its home, or its primary
key. The EntityContext is set only once
in the life of an entity bean instance,
so its reference should be put into one
of the bean instance's fields if it will
be needed later.
The unsetEntityContext()
method is used at the end of the bean's
life cycle before the instance is evicted
from memory to dereference the EntityContext
and perform any last-minute clean-up.
The ejbLoad() and ejbStore()
methods in CMP entities are invoked when
the entity bean's state is being synchronized
with the database. The ejbLoad() is invoked
just after the container has refreshed
the bean container-managed fields with
its state from the database. The ejbStore()
method is invoked just before the container
is about to write the bean container-managed
fields to the database. These methods
are used to modify data as it's being
synchronized. This is common when the
data stored in the database is different
than the data used in the bean fields.
The ejbPassivate() and
ejbActivate() methods
are invoked on the bean by the container
just before the bean is passivated and
just after the bean is activated, respectively.
Passivation in entity beans means that
the bean instance is disassociated with
its remote reference so that the container
can evict it from memory or reuse it.
It's a resource conservation measure the
container employs to reduce the number
of instances in memory. A bean might be
passivated if it hasn't been used for
a while or as a normal operation performed
by the container to maximize reuse of
resources. Some containers will evict
beans from memory, while others will reuse
instances for other more active remote
references. The ejbPassivate() and ejbActivate()
methods provide the bean with a notification
as to when it's about to be passivated
(disassociated with the remote reference)
or activated (associated with a remote
reference). |
| |
|
|