org.codehaus.aspectwerkz.connectivity
Class RemoteProxy

java.lang.Object
  extended byorg.codehaus.aspectwerkz.connectivity.RemoteProxy
All Implemented Interfaces:
java.lang.reflect.InvocationHandler, java.io.Serializable

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

This class provides a general remote proxy. It uses the Dynamic Proxy mechanism that was introduced with JDK 1.3.

The client proxy sends all requests to a server via a socket connection. The server returns results in the same way. Every object that is transferred (i.e. result of method invocation) has to support the Serializable interface.

Author:
Jonas Bonér
See Also:
Serialized Form

Method Summary
 void close()
          Closes the proxy and the connection to the server.
static RemoteProxy createClientProxy(java.lang.String[] interfaces, java.lang.String impl, java.lang.String address, int port)
          Creates a new proxy to a class.
static RemoteProxy createClientProxy(java.lang.String[] interfaces, java.lang.String impl, java.lang.String address, int port, java.lang.ClassLoader loader)
          Creates a new proxy to a class.
static RemoteProxy createServerProxy(java.lang.Object implInstance, java.lang.String address, int port)
          Creates a proxy to a specific instance in the on the server side.
 java.lang.Object getProxy()
          Look up and retrives a proxy to an object from the server.
 java.lang.Object getProxy(java.lang.ClassLoader loader)
          Look up and retrives a proxy to an object from the server.
 java.lang.Object getProxy(java.lang.ClassLoader loader, java.lang.Object ctx)
          Look up and retrives a proxy to an object from the server.
static java.lang.Object getWrappedInstance(java.lang.String handle)
          Returns a proxy wrapped instance by its handle.
 java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
          This method is invoked automatically by the proxy.
static java.lang.String wrapInstance(java.lang.Object instance)
          Wraps a new instance and maps it to a handle.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

createServerProxy

public static RemoteProxy createServerProxy(java.lang.Object implInstance,
                                            java.lang.String address,
                                            int port)
Creates a proxy to a specific instance in the on the server side. This proxy could then be passed to the client which can invoke method on this specific instance.

Parameters:
address - the address to connect to.
port - the port to connect to.
Returns:
the new remote proxy instance

createClientProxy

public static RemoteProxy createClientProxy(java.lang.String[] interfaces,
                                            java.lang.String impl,
                                            java.lang.String address,
                                            int port,
                                            java.lang.ClassLoader loader)
Creates a new proxy to a class. To be used on the client side to create a new proxy to an object.

Parameters:
interfaces - the class name of the interface for the object to create the proxy for
impl - the class name of the the object to create the proxy for
address - the address to connect to.
port - the port to connect to.
loader - the class loader to use
Returns:
the new remote proxy instance

createClientProxy

public static RemoteProxy createClientProxy(java.lang.String[] interfaces,
                                            java.lang.String impl,
                                            java.lang.String address,
                                            int port)
Creates a new proxy to a class. To be used on the client side to create a new proxy to an object.

Parameters:
interfaces - the class name of the interface for the object to create the proxy for
impl - the class name of the the object to create the proxy for
address - the address to connect to.
port - the port to connect to.
Returns:
the new remote proxy instance

getProxy

public java.lang.Object getProxy()
Look up and retrives a proxy to an object from the server.

Returns:
the object

getProxy

public java.lang.Object getProxy(java.lang.ClassLoader loader)
Look up and retrives a proxy to an object from the server.

Parameters:
loader - the classloader to use
Returns:
the object

getProxy

public java.lang.Object getProxy(java.lang.ClassLoader loader,
                                 java.lang.Object ctx)
Look up and retrives a proxy to an object from the server.

Parameters:
loader - the classloader to use
ctx - the context carrying the users principal and credentials
Returns:
the object

invoke

public java.lang.Object invoke(java.lang.Object proxy,
                               java.lang.reflect.Method method,
                               java.lang.Object[] args)
This method is invoked automatically by the proxy. Should not be called directly.

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. If the declared return type of the interface method is a primitive type, then the value returned by this method must be an instance of the corresponding primitive wrapper class; otherwise, it must be a type assignable to the declared return type. If the value returned by this method is null and the interface method's return type is primitive, then a NullPointerException will be thrown by the method invocation on the proxy instance. If the value returned by this method is otherwise not compatible with the interface method's declared return type as described above, a ClassCastException will be thrown by the method invocation on the proxy instance.

close

public void close()
Closes the proxy and the connection to the server.


getWrappedInstance

public static java.lang.Object getWrappedInstance(java.lang.String handle)
Returns a proxy wrapped instance by its handle.

Parameters:
handle - the handle
Returns:
the instance

wrapInstance

public static java.lang.String wrapInstance(java.lang.Object instance)
Wraps a new instance and maps it to a handle.

Parameters:
instance - the instance to wrap
Returns:
the handle for the instance


Copyright (c) 2002-2004 The AspectWerkz Team. All Rights Reserved.