org.objectweb.easybeans.rpc
Class ClientRPCInvocationHandler

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

public class ClientRPCInvocationHandler
extends java.lang.Object
implements java.lang.reflect.InvocationHandler, java.io.Serializable

This class sends an EJB request to the server and send back to the client the response.

Author:
Florent Benoit
See Also:
Serialized Form

Field Summary
private  java.lang.Long beanId
          Bean id.
private  java.lang.String containerId
          Container id.
private  java.lang.String factoryName
          Factory name.
private  java.util.Map<java.lang.reflect.Method,java.lang.Long> hashedMethods
          Map between method and its hash.
private static long serialVersionUID
          Id for serializable class.
 
Constructor Summary
ClientRPCInvocationHandler(java.lang.String containerId, java.lang.String factoryName)
          Build a new Invocation handler.
 
Method Summary
private  java.lang.Object handleObjectMethods(java.lang.reflect.Method method, java.lang.Object[] args)
          Manages all methods of java.lang.Object class.
 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 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
Id for serializable class.

See Also:
Constant Field Values

containerId

private java.lang.String containerId
Container id.


factoryName

private java.lang.String factoryName
Factory name.


beanId

private java.lang.Long beanId
Bean id.


hashedMethods

private java.util.Map<java.lang.reflect.Method,java.lang.Long> hashedMethods
Map between method and its hash.

Constructor Detail

ClientRPCInvocationHandler

public ClientRPCInvocationHandler(java.lang.String containerId,
                                  java.lang.String factoryName)
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.
Method Detail

invoke

public java.lang.Object invoke(java.lang.Object proxy,
                               java.lang.reflect.Method method,
                               java.lang.Object[] args)
                        throws java.lang.RuntimeException
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
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.RuntimeException - the exception to throw from the method invocation on the proxy instance.

handleObjectMethods

private java.lang.Object handleObjectMethods(java.lang.reflect.Method method,
                                             java.lang.Object[] args)
Manages all methods of java.lang.Object class.

Parameters:
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
Returns:
the value of the called method.