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.