org.objectweb.easybeans.rpc
Class EJBHomeRPCInvocationHandler

java.lang.Object
  extended by org.objectweb.easybeans.rpc.AbsInvocationHandler
      extended by org.objectweb.easybeans.rpc.ClientRPCInvocationHandler
          extended by org.objectweb.easybeans.rpc.EJBHomeRPCInvocationHandler
All Implemented Interfaces:
java.io.Serializable, java.lang.reflect.InvocationHandler

public class EJBHomeRPCInvocationHandler
extends ClientRPCInvocationHandler

This class sends an EJB request to the server and send back to the client the response. It handles the EJBHome calls.

Author:
Florent Benoit
See Also:
Serialized Form

Field Summary
private  java.lang.String remoteInterface
          Remote interface.
private static long serialVersionUID
          Id for serializable class.
 
Constructor Summary
EJBHomeRPCInvocationHandler(java.lang.String containerId, java.lang.String factoryName, boolean useID, java.lang.String remoteInterface)
          Build a new Invocation handler.
 
Method Summary
private  EJBMetaData handleGetEJBMetadata(java.lang.Object proxy)
          Build a metadata object.
private  HomeHandle handleGetHomeHandle()
          Gets an Home handle from this EJB Home.
private  void handleRemoveMethod(java.lang.Object[] args)
          Handle the remove method for this EJB Home object.
 java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
          Processes a method invocation on a proxy instance and returns the result.
 
Methods inherited from class org.objectweb.easybeans.rpc.ClientRPCInvocationHandler
convertThrowable, getRMIEnv, setRMIEnv
 
Methods inherited from class org.objectweb.easybeans.rpc.AbsInvocationHandler
getBeanId, getContainerId, getFactoryName, getHashedMethods, getInterfaceClassName, handleObjectMethods, handleThrowable, isExtendingRmiRemote, isRemoved, isUsingID, setBeanId, setContainerId, setExtendingRmiRemote, setFactoryName, setHashedMethods, setInterfaceClass, setInterfaceClassName, setRemoved, setUseID, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
Id for serializable class.

See Also:
Constant Field Values

remoteInterface

private java.lang.String remoteInterface
Remote interface.

Constructor Detail

EJBHomeRPCInvocationHandler

public EJBHomeRPCInvocationHandler(java.lang.String containerId,
                                   java.lang.String factoryName,
                                   boolean useID,
                                   java.lang.String remoteInterface)
Build a new Invocation handler.

Parameters:
containerId - the id of the container that will be called on the remote side.
factoryName - the name of the remote factory.
useID - true if all instance build with this ref are unique (stateful), false if it references the same object (stateless)
remoteInterface - the name of the remote interface used by the home interface.
Method Detail

invoke

public java.lang.Object invoke(java.lang.Object proxy,
                               java.lang.reflect.Method method,
                               java.lang.Object[] args)
                        throws java.lang.Exception
Processes a method invocation on a proxy instance and returns the result. This method will be invoked on an invocation handler when a method is invoked on a proxy instance that it is associated with.

Specified by:
invoke in interface java.lang.reflect.InvocationHandler
Overrides:
invoke in class ClientRPCInvocationHandler
Parameters:
proxy - the proxy instance that the method was invoked on
method - the Method instance corresponding to the interface method invoked on the proxy instance. The declaring class of the Method object will be the interface that the method was declared in, which may be a superinterface of the proxy interface that the proxy class inherits the method through.
args - an array of objects containing the values of the arguments passed in the method invocation on the proxy instance, or null if interface method takes no arguments. Arguments of primitive types are wrapped in instances of the appropriate primitive wrapper class, such as java.lang.Integer or java.lang.Boolean.
Returns:
the value to return from the method invocation on the proxy instance.
Throws:
java.lang.Exception - the exception to throw from the method invocation on the proxy instance.

handleRemoveMethod

private void handleRemoveMethod(java.lang.Object[] args)
                         throws java.rmi.RemoteException,
                                RemoveException
Handle the remove method for this EJB Home object. If the remove method is not applied with an Handle, it means that it is for the primary key and this is not supported (Only handle session bean Home).

Parameters:
args - the arguments of the remove method. For primary key, it will throw an error.
Throws:
RemoveException - when applying remove method on a primary key.
java.rmi.RemoteException - if the ejbObject cannot be retrieved from the handle or if the remove method is failing.

handleGetEJBMetadata

private EJBMetaData handleGetEJBMetadata(java.lang.Object proxy)
                                  throws java.rmi.RemoteException
Build a metadata object.

Parameters:
proxy - the object on which the method is currently invoked (it's the home proxy).
Returns:
an EJB metadata object.
Throws:
java.rmi.RemoteException - if metadata object cannot be built.

handleGetHomeHandle

private HomeHandle handleGetHomeHandle()
Gets an Home handle from this EJB Home.

Returns:
an instance of an HomeHandle object.