Given a list of responsibilities related to session beans, identify those which
are the responsibility of the session bean provider and those which are the responsibility
of the EJB container provider.
Bean Provider's responsibility
The session bean provider is responsible for providing the following class files:
Session bean class.
Session bean’s remote interface and remote home interface, if the
session bean provides a remote client view.
Session bean’s local interface and local home interface, if the session bean
provides a local client view.
Container Provider's responsibility
The container provider is responsible for providing the deployment tools and for
managing the session bean instances at runtime.
The deployment tools provided by the container are responsible for the generation
of additional classes when the session bean is deployed. The tools obtain the information
that they need for generation of the additional classes by introspecting the classes
and interfaces provided by the enterprise bean provider and by examining the
session bean’s deployment descriptor.
The deployment tools must generate the following classes:
A class that implements the session bean’s remote home interface (session
EJBHome class).
A class that implements the session bean’s remote interface (session
EJBObject class).
A class that implements the session bean’s local home interface (session
EJBLocalHome class).
A class that implements the session bean’s local interface (session
EJBLocalObject class).
The deployment tools may also generate a class that mixes some container-specific
code with the session bean class. This code may, for example, help the container
to manage the bean instances at runtime. The tools can use subclassing, delegation,
and code generation.
The session EJBHome class, which is generated by the
deployment tools, implements the session bean’s remote home interface. This
class implements the methods of the javax.ejb.EJBHome interface
and the create<METHOD> methods specific to the
session bean. The implementation of each create<METHOD>(...)
method invokes a matching ejbCreate<METHOD>(...) method.
The session EJBObject class, which is generated by the
deployment tools, implements the session bean’s remote interface. It implements
the methods of the javax.ejb.EJBObject interface and the
business methods specific to the session bean. The implementation of each business
method must activate the instance (if the instance is in the passive state)
and invoke the matching business method on the instance.
The session EJBLocalHome class, which is generated by the
deployment tools, implements the session bean’s local home interface. This
class implements the methods of the javax.ejb.EJBLocalHome
interface and the create<METHOD> methods specific
to the session bean. The implementation of each
create<METHOD>(...) method invokes a matching
ejbCreate<METHOD>(...) method.
The session EJBLocalObject class, which is generated
by the deployment tools, implements the session bean’s local interface. It
implements the methods of the javax.ejb.EJBLocalObject
interface and the business methods specific to the session bean.
The implementation of each business method must activate the instance
(if the instance is in the passive state) and invoke the matching business
method on the instance.
The deployment tools are responsible for implementing the handle classes for
the session bean’s REMOTE HOME and REMOTE interfaces.
The deployment tools are responsible for implementing the class that provides
meta-data to the remote client view contract. The class must be a valid
RMI Value class and must implement the javax.ejb.EJBMetaData
interface.
The container must ensure that ONLY ONE thread can be executing an instance at
any time. If a client request arrives for an instance while the instance
is executing another request, the container may throw the
java.rmi.RemoteException to the second request if the client
is a remote client, or the javax.ejb.EJBException if the client
is a local client.
The container MUST follow the rules with respect to transaction scoping,
security checking, and exception handling.
The container MUST implement the SessionContext.getEJBObject()
method such that the bean instance can use the Java language cast to convert the
returned value to the session bean’s remote interface type. Specifically, the
bean instance does not have to use the
PortableRemoteObject.narrow(...) method for the type
conversion.
Visit http://java.boot.by
for the updates.