When should I adopt BMP and
when I should use CMP?
You can use CMP and BMP beans in the same application… obviously, a bean can be
BMP or CMP, not both at the same time (they are mutually exclusive).
There is a common approach that is normally used and considered a good one. You
should start developing CMP beans, unless you require some kind of special bean,
like multi-tables, that cannot be completely realized with a single bean. Then,
when you realize that you need something more or that you would prefer handling
the persistence (performanbce issue are the most common reason), you can change
the bean from a CMP to a BMP.
Static variables in EJB
should not be relied upon as they may break in clusters.Why?
Static variables are only ok if they are final. If they are not final, they
will break the cluster. What that means is that if you cluster your
application server (spread it across several machines) each part of the
cluster will run in its own JVM.
Say a method on the EJB is invoked on cluster 1 (we will have two clusters -
1 and 2) that causes value of the static variable to be increased to 101. On
the subsequent call to the same EJB from the same client, a cluster 2 may be
invoked to handle the request. A value of the static variable in cluster 2
is still 100 because it was not increased yet and therefore your application
ceases to be consistent. Therefore, static non-final variables are strongly
discouraged in EJBs.
Can I develop an Entity
Bean without implementing the create() method in the home interface?
As per the specifications, there can be ‘ZERO’ or ‘MORE’ create() methods
defined in an Entity Bean. In cases where create() method is not provided,
the only way to access the bean is by knowing its primary key, and by
acquiring a handle to it by using its corresponding finder method. In those
cases, you can create an instance of a bean based on the data present in the
table. All one needs to know is the primary key of that table. i.e. a set a
columns that uniquely identify a single row in that table. Once this is
known, one can use the ‘getPrimaryKey()’ to get a remote reference to that
bean, which can further be used to invoke business methods.
What is the need of
Remote and Home interface. Why cant it be in one?
The main reason is because there is a clear division of roles and
responsibilities between the two interfaces. The home interface is your way
to communicate with the container, that is who is responsible of creating,
locating even removing one or more beans. The remote interface is your link
to the bean, that will allow you to remotely access to all its methods and
members. As you can see there are two distinct elements (the container and
the beans) and you need two different interfaces for accessing to both of
What is bean managed
If a developer doesn’t want a Container to manage transactions, it’s
possible to implement all database operations manually by writing the
appropriate JDBC code. This often leads to productivity increase, but it
makes an Entity Bean incompatible with some databases and it enlarges the
amount of code to be written. All transaction management is explicitly
performed by a developer.
What is an EJB Context?
EJBContext is an interface that is implemented by the container, and it is
also a part of the bean-container contract. Entity beans use a subclass of
EJBContext called EntityContext. Session beans use a subclass called
SessionContext. These EJBContext objects provide the bean class with
information about its container, the client using the bean and the bean
itself. They also provide other functions. See the API docs and the spec for
How can I call one EJB
from inside of another EJB?
EJBs can be clients of other EJBs. It just works. Use JNDI to locate the
Home Interface of the other bean, then acquire an instance reference, and so
What happens if remove(
) is never invoked on a session bean?
In case of a stateless session bean it may not matter if we call or not as
in both cases nothing is done. The number of beans in cache is managed by
In case of stateful session bean, the bean may be kept in cache till either
the session times out, in which case the bean is removed or when there is a
requirement for memory in which case the data is cached and the bean is sent
to free pool.
Page Numbers :