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:
- java.io.Serializable, InvocationHandler
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
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.BaseEjbProxyHandler |
checkAuthorization, copyArgs, copyObj, equals, getThreadSpecificSecurityIdentity, hashCode, invalidateAllHandlers, invoke, isLocal, registerHandler, setIntraVmCopyMode, setLocal, toString |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
StatefulEjbHomeHandler
public StatefulEjbHomeHandler(RpcContainer container,
java.lang.Object pk,
java.lang.Object depID)
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.
- Specified by:
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.
- Specified by:
removeByPrimaryKey
in class EjbHomeProxyHandler
- Returns:
- Returns null
- Throws:
java.lang.Throwable
- See Also:
EJBHome
,
EJBHome.remove(javax.ejb.Handle)
newEjbObjectHandler
protected EjbObjectProxyHandler newEjbObjectHandler(RpcContainer container,
java.lang.Object pk,
java.lang.Object depID)
- Specified by:
newEjbObjectHandler
in class EjbHomeProxyHandler
Copyright © 1999-2011 OpenEJB. All Rights Reserved.