org.openejb.core.stateless
Class StatelessEjbObjectHandler

java.lang.Object
  extended by org.openejb.core.ivm.BaseEjbProxyHandler
      extended by org.openejb.core.ivm.EjbObjectProxyHandler
          extended by org.openejb.core.stateless.StatelessEjbObjectHandler
All Implemented Interfaces:
java.io.Serializable, InvocationHandler

public class StatelessEjbObjectHandler
extends EjbObjectProxyHandler

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

Field Summary
 java.lang.Object registryId
           
 
Fields inherited from class org.openejb.core.ivm.EjbObjectProxyHandler
logger
 
Fields inherited from class org.openejb.core.ivm.BaseEjbProxyHandler
container, deploymentID, deploymentInfo, doIntraVmCopy, inProxyMap, isInvalidReference, liveHandleRegistry, primaryKey
 
Constructor Summary
StatelessEjbObjectHandler(RpcContainer container, java.lang.Object pk, java.lang.Object depID)
           
 
Method Summary
static java.lang.Object createRegistryId(java.lang.Object primKey, java.lang.Object deployId, Container contnr)
           
protected  java.lang.Object getPrimaryKey(java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object proxy)
          5.8.3 getPrimaryKey()
 java.lang.Object getRegistryId()
          The Registry id is a logical identifier that is used as a key when placing EjbObjectProxyHanlders into the BaseEjbProxyHanlder's liveHandleRegistry.
protected  java.lang.Object isIdentical(java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object proxy)
          5.8.2 Stateless session beans
protected  java.lang.Object remove(java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object proxy)
           
 
Methods inherited from class org.openejb.core.ivm.EjbObjectProxyHandler
_invoke, _writeReplace, businessMethod, getEJBHome, getHandle, getProxyInfo
 
Methods inherited from class org.openejb.core.ivm.BaseEjbProxyHandler
checkAuthorization, copyArgs, copyObj, equals, getThreadSpecificSecurityIdentity, hashCode, invalidateAllHandlers, invalidateReference, invoke, isLocal, registerHandler, setIntraVmCopyMode, setLocal, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

registryId

public java.lang.Object registryId
Constructor Detail

StatelessEjbObjectHandler

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

createRegistryId

public static java.lang.Object createRegistryId(java.lang.Object primKey,
                                                java.lang.Object deployId,
                                                Container contnr)

getRegistryId

public java.lang.Object getRegistryId()
Description copied from class: EjbObjectProxyHandler
The Registry id is a logical identifier that is used as a key when placing EjbObjectProxyHanlders into the BaseEjbProxyHanlder's liveHandleRegistry. EjbObjectProxyHanlders that represent the same bean identity (keyed by the registry id) will be stored together so that they can be removed together when the BaseEjbProxyHandler.invalidateAllHandlers is invoked. This method is implemented by the subclasses to return an id that logically identifies bean identity for a specific deployment id and container. For example, the EntityEjbObjectHandler overrides this method to return a compound key composed of the bean's primary key, deployment id, and container id. This uniquely identifies the bean identity that is proxied by this handler. Another example is the StatefulEjbObjectHanlder which overrides this method to return the stateful bean's hidden primary key, which is a java.rmi.dgc.VMID.

Specified by:
getRegistryId in class EjbObjectProxyHandler

getPrimaryKey

protected java.lang.Object getPrimaryKey(java.lang.reflect.Method method,
                                         java.lang.Object[] args,
                                         java.lang.Object proxy)
                                  throws java.lang.Throwable
5.8.3 getPrimaryKey()

The object identifier of a session object is, in general, opaque to the client. The result of getPrimaryKey() on a session EJBObject reference results in java.rmi.RemoteException.

Specified by:
getPrimaryKey in class EjbObjectProxyHandler
Parameters:
method -
args -
proxy -
Returns:
Object
Throws:
java.lang.Throwable

isIdentical

protected java.lang.Object isIdentical(java.lang.reflect.Method method,
                                       java.lang.Object[] args,
                                       java.lang.Object proxy)
                                throws java.lang.Throwable
5.8.2 Stateless session beans

All session objects of the same stateless session bean within the same home have the same object identity, which is assigned by the container. If a stateless session bean is deployed multiple times (each deployment results in the creation of a distinct home), session objects from different homes will have a different identity.

The isIdentical(EJBObject otherEJBObject) method always returns true when used to compare object references of two session objects of the same stateless session bean. The following example illustrates the use of the isIdentical method for a stateless session object.

 FooHome fooHome = ...; // obtain home of a stateless session bean
 Foo foo1 = fooHome.create();
 Foo foo2 = fooHome.create();
 if (foo1.isIdentical(foo1)) {// this test returns true
 ...
 }
 if (foo1.isIdentical(foo2)) {// this test returns true
 ...
 }
 

Specified by:
isIdentical in class EjbObjectProxyHandler
Parameters:
method -
args -
proxy -
Returns:
Object
Throws:
java.lang.Throwable

remove

protected java.lang.Object remove(java.lang.reflect.Method method,
                                  java.lang.Object[] args,
                                  java.lang.Object proxy)
                           throws java.lang.Throwable
Specified by:
remove in class EjbObjectProxyHandler
Throws:
java.lang.Throwable


Copyright © 1999-2011 OpenEJB. All Rights Reserved.