A client locates a session bean’s home interface using JNDI. For example, the remote home interface for the Cart session bean can be located using the following code segment:
Context initialContext = new InitialContext(); CartHome cartHome = (CartHome)javax.rmi.PortableRemoteObject.narrow( initialContext.lookup(?java:comp/env/ejb/cart?), CartHome.class);
If the Cart session bean provides a local client view instead of a remote client view and CartHome is a local home interface, this lookup might be as follows:
Context initialContext = new InitialContext(); CartHome cartHome = (CartHome) initialContext.lookup(?java:comp/env/ejb/cart?);
A client can pass a remote home object reference to another application. The receiving application can use the home interface in the same way that it would use a remote home object reference obtained via JNDI.
A client can pass a local home object reference to another application through its local interface. A local home object reference cannot be passed as an argument or result of a method on an enterprise bean’s remote home or remote interface.
The REMOTE HOME interface allows a client to do the following:
Create a new session object.
Remove a session object (using bean's HANDLE).
Get the javax.ejb.EJBMetaData interface for the session bean. The javax.ejb.EJBMetaData interface is intended to allow application assembly tools to discover information about the session bean, and to allow loose client/server binding and client-side scripting.
Obtain a handle for the REMOTE home interface. The home handle can be SERIALIZED and written to stable storage. Later, possibly in a different JVM, the handle can be deserialized from stable storage and used to obtain back a reference of the remote home interface.
public interface EJBHome extends Remote { EJBMetaData getEJBMetaData() throws RemoteException; HomeHandle getHomeHandle() throws RemoteException; void remove(Handle handle) throws RemoteException, RemoveException; void remove(Object primaryKey) throws RemoteException, RemoveException; // only Entity EJB !!! }
The LOCAL HOME interface allows a local client to do the following:
Create a new session object.
public interface EJBLocalHome { void remove(Object primaryKey) throws RemoveException, EJBException; // only Entity EJB !!! }
EJBMetaData and HomeHandle are ONLY accessible for REMOTE HOME interfaces.
EJBHome interface extends Remote (marker) interface.
Session bean can be removed ONLY using it's handle (remote view ONLY), since it does not have primary key.
Visit http://java.boot.by for the updates.