org.openejb.core.stateful
Class StatefulEjbHomeHandler

java.lang.Object
  |
  +--org.openejb.core.ivm.BaseEjbProxyHandler
        |
        +--org.openejb.core.ivm.EjbHomeProxyHandler
              |
              +--org.openejb.core.stateful.StatefulEjbHomeHandler
All Implemented Interfaces:
InvocationHandler, java.io.Serializable

public class StatefulEjbHomeHandler
extends EjbHomeProxyHandler

This InvocationHandler and its proxy are serializable and can be used by HomeHandle, Handle, and MetaData to persist and revive handles. It maintains its original client identity which allows the container to be more discerning about allowing the revieed proxy to be used. See StatefulContaer manager for more details.

Author:
David Blevins, Richard Monson-Haefel
See Also:
Serialized Form

Fields inherited from class org.openejb.core.ivm.EjbHomeProxyHandler
dispatchTable, logger
 
Fields inherited from class org.openejb.core.ivm.BaseEjbProxyHandler
container, deploymentID, deploymentInfo, doIntraVmCopy, inProxyMap, isInvalidReference, liveHandleRegistry, primaryKey
 
Constructor Summary
StatefulEjbHomeHandler(RpcContainer container, java.lang.Object pk, java.lang.Object depID)
           
 
Method Summary
protected  java.lang.Object createProxy(ProxyInfo proxyInfo)
           
protected  java.lang.Object findX(java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object proxy)
          EJB 1.1 Specification, Section 5.5 Session object identity Since all session objects hide their identity, there is no need to provide a finder for them.
protected  EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container, java.lang.Object pk, java.lang.Object depID)
           
protected  java.lang.Object removeByPrimaryKey(java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object proxy)
          ------------------------------------ 5.3.2 Removing a session object A client may remove a session object using the remove() method on the javax.ejb.EJBObject interface, or the remove(Handle handle) method of the javax.ejb.EJBHome interface.
 
Methods inherited from class org.openejb.core.ivm.EjbHomeProxyHandler
_invoke, _writeReplace, , create, getEJBMetaData, getHomeHandle, getProxyInfo, removeWithHandle
 
Methods inherited from class org.openejb.core.ivm.BaseEjbProxyHandler
checkAuthorization, copyArgs, copyObj, equals, getThreadSpecificSecurityIdentity, hashCode, invalidateAllHandlers, invalidateReference, invoke, registerHandler, setIntraVmCopyMode, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

StatefulEjbHomeHandler

public StatefulEjbHomeHandler(RpcContainer container,
                              java.lang.Object pk,
                              java.lang.Object depID)
Method Detail

createProxy

protected java.lang.Object createProxy(ProxyInfo proxyInfo)
Overrides:
createProxy in class EjbHomeProxyHandler

findX

protected java.lang.Object findX(java.lang.reflect.Method method,
                                 java.lang.Object[] args,
                                 java.lang.Object proxy)
                          throws java.lang.Throwable
EJB 1.1 Specification, Section 5.5 Session object identity Since all session objects hide their identity, there is no need to provide a finder for them. The home interface of a session bean must not define any finder methods.
Overrides:
findX in class EjbHomeProxyHandler
Parameters:
method -  
args -  
proxy -  
Returns:
Returns an new EJBObject proxy and handler
Throws:
java.lang.Throwable -  

removeByPrimaryKey

protected java.lang.Object removeByPrimaryKey(java.lang.reflect.Method method,
                                              java.lang.Object[] args,
                                              java.lang.Object proxy)
                                       throws java.lang.Throwable
------------------------------------ 5.3.2 Removing a session object A client may remove a session object using the remove() method on the javax.ejb.EJBObject interface, or the remove(Handle handle) method of the javax.ejb.EJBHome interface. Because session objects do not have primary keys that are accessible to clients, invoking the javax.ejb.EJBHome.remove(Object primaryKey) method on a session results in the javax.ejb.RemoveException. ------------------------------------ 5.5 Session object identity Session objects are intended to be private resources used only by the client that created them. For this reason, session objects, from the client’s perspective, appear anonymous. In contrast to entity objects, which expose their identity as a primary key, session objects hide their identity. As a result, the EJBObject.getPrimaryKey() and EJBHome.remove(Object primaryKey) methods result in a java.rmi.RemoteException if called on a session bean. If the EJBMetaData.getPrimaryKeyClass() method is invoked on a EJBMetaData object for a Session bean, the method throws the java.lang.RuntimeException. ------------------------------------ Sections 5.3.2 and 5.5 conflict. 5.3.2 says to throw javax.ejb.RemoveException, 5.5 says to throw java.rmi.RemoteException. For now, we are going with java.rmi.RemoteException.
Overrides:
removeByPrimaryKey in class EjbHomeProxyHandler
Following copied from class: org.openejb.core.ivm.EjbHomeProxyHandler
Parameters:
method -  
args -  
Returns:
Returns null
Throws:
java.lang.Throwable -  
See Also:
EJBHome, EJBHome.remove(java.lang.Object)

newEjbObjectHandler

protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container,
                                                    java.lang.Object pk,
                                                    java.lang.Object depID)
Overrides:
newEjbObjectHandler in class EjbHomeProxyHandler


Copyright © 2002 OpenEJB Group. All Rights Reserved. http://openejb.sourceforge.net