de.root1.simon
Class Simon

java.lang.Object
  extended by de.root1.simon.Simon

public class Simon
extends java.lang.Object

This is SIMONs core class which contains all the core functionality like setting up a SIMON server or lookup a remote object from the client side


Field Summary
protected static java.lang.String SIMON_STD_PROTOCOL_CODEC_FACTORY
          Identifies the class, that is used as SIMON's standard protocol codec factory
 
Constructor Summary
Simon()
           
 
Method Summary
static Lookup createInterfaceLookup(java.net.InetAddress address, int port)
          Creates a interface lookup object that is used to lookup remote objects.
static Lookup createInterfaceLookup(java.lang.String host, int port)
          Creates a interface lookup object that is used to lookup remote objects.
static Lookup createNameLookup(java.net.InetAddress address, int port)
          Creates a name lookup object that is used to lookup remote objects.
static Lookup createNameLookup(java.lang.String host, int port)
          Creates a name lookup object that is used to lookup remote objects.
static Registry createRegistry(java.net.InetAddress address, int port)
          Creates a registry listening on a specific network interface, identified by the given InetAddress with the last known worker thread pool size set by setWorkerThreadPoolSize(int)
static Registry createRegistry(int port)
          Creates a registry listening on all interfaces with the last known worker thread pool size set by setWorkerThreadPoolSize(int)
static Registry createRegistry(SslContextFactory sslContextFactory, java.net.InetAddress address, int port)
          Creates a registry listening on a specific network interface, identified by the given InetAddress with the last known worker thread pool size set by setWorkerThreadPoolSize(int).
static int getDefaultKeepAliveTimeout()
          Gets the default network write timeout time in seconds.
static int getDgcInterval()
          Deprecated. use getKeepAliveInterval() instead!
static int getKeepAliveInterval()
          Gets the default keep-alive interval time in seconds.
static int getKeepAliveInterval(java.lang.Object remoteObject)
          Gets the keep alive interval time in seconds of the given remote object.
static int getKeepAliveTimeout(java.lang.Object remoteObject)
          Gets the keep alive timeout time in seconds of the given remote object.
static java.net.InetSocketAddress getLocalInetSocketAddress(java.lang.Object proxyObject)
          Gets the InetSocketAddress used on the local-side of the given proxy object
static int getLocalPort(java.lang.Object proxyObject)
          Deprecated. use Simon.getLocalInetSocketAddress(proxyObject).getPort() instead!
static java.lang.String getProtocolCodecFactory()
          Returns the current set class name for the protocol codec factory
static java.net.InetAddress getRemoteInetAddress(java.lang.Object proxyObject)
          Deprecated. use Simon.getRemoteInetSocketAddress(Object).getAddress() instead!
static java.net.InetSocketAddress getRemoteInetSocketAddress(java.lang.Object proxyObject)
          Gets the InetSocketAddress used on the remote-side of the given proxy object
static int getRemotePort(java.lang.Object proxyObject)
          Deprecated. use Simon.getRemoteInetSocketAddress(proxyObject).getPort() instead!
protected static SimonProxy getSimonProxy(java.lang.Object o)
          Retrieves SimonProxy invocation handler wrapped in a simple proxy
static SimonRemoteStatistics getStatistics(java.lang.Object remoteObject)
          Returns a object that lets you get some network related information on the session of the given remote object (an instance of SimonProxy
protected static java.util.concurrent.ExecutorService getThreadPool()
          Returns the reference to the worker thread pool
static SimonRemote lookup(java.net.InetAddress host, int port, java.lang.String remoteObjectName)
          Deprecated. Use Simon#createNameLookup() instead ...
static SimonRemote lookup(SslContextFactory sslContextFactory, SimonProxyConfig proxyConfig, java.net.InetAddress host, int port, java.lang.String remoteObjectName)
          Deprecated. Use Simon#createNameLookup() instead ...
static SimonRemote lookup(SslContextFactory sslContextFactory, SimonProxyConfig proxyConfig, java.net.InetAddress host, int port, java.lang.String remoteObjectName, ClosedListener listener)
          Deprecated. Use Simon#createNameLookup() instead ...
static SimonRemote lookup(java.lang.String host, int port, java.lang.String remoteObjectName)
          Deprecated. Use Simon#createNameLookup() instead ...
static java.lang.Object markAsRemote(java.lang.Object o)
          Marks the object with SimonRemote to make it able to receive incoming calls.
static RawChannel openRawChannel(int channelToken, java.lang.Object simonRemote)
          Opens a raw channel to transfer data from the current station to the remote station described by the given simonRemote
static int prepareRawChannel(RawChannelDataListener listener, java.lang.Object simonRemote)
          Prepare simonRemote's internal message dispatcher for receiving raw data.
protected static void publish(SimonPublication simonPublication)
          Publishes a remote object.
protected static void registerLookupTable(LookupTable lookupTable)
          TODO document me
static boolean release(java.lang.Object proxyObject)
          Deprecated. Use Simon#createNameLookup() and AbstractLookup#release() instead ...
static java.util.List<SimonPublication> searchRemoteObjects(int searchTime)
          Starts a search on the local network for published remote objects.
static PublicationSearcher searchRemoteObjects(SearchProgressListener listener, int searchTime)
          Creates a background thread that searches for published remote objects on the local network
static void setDefaultKeepAliveInterval(int seconds)
          Sets the keep alive default interval time in seconds.
static void setDefaultKeepAliveTimeout(int seconds)
          Sets the default keep alive timeout time in seconds.
static void setDgcInterval(int milliseconds)
          Deprecated. use setDefaultKeepAliveInterval(int) instead!
static void setKeepAliveInterval(java.lang.Object remoteObject, int seconds)
          Sets the keep alive interval time in seconds for the specified remote object
static void setKeepAliveTimeout(java.lang.Object remoteObject, int seconds)
          Sets the keep alive timeout time in seconds for the specified remote object.
static void setProtocolCodecFactory(java.lang.String protocolFactoryClassName)
          Sets class name for the protocol codec factory to use for all future createRegistry() or lookup() calls.
static void setWorkerThreadPoolSize(int size)
          Sets the size of the worker thread pool.
static void shutdownRegistry(Registry registry)
          Deprecated. You should call stop() on the registry to shutdown the registry instead of using this method.
protected static boolean unpublish(SimonPublication simonPublication)
          Unpublishs a already published SimonPublication.
protected static void unregisterLookupTable(LookupTable lookupTable)
          TODO document me
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SIMON_STD_PROTOCOL_CODEC_FACTORY

protected static final java.lang.String SIMON_STD_PROTOCOL_CODEC_FACTORY
Identifies the class, that is used as SIMON's standard protocol codec factory

Constructor Detail

Simon

public Simon()
Method Detail

createRegistry

public static Registry createRegistry(int port)
                               throws java.net.UnknownHostException,
                                      java.io.IOException
Creates a registry listening on all interfaces with the last known worker thread pool size set by setWorkerThreadPoolSize(int)

Parameters:
port - the port on which SIMON listens for connections
Returns:
the created registry object
Throws:
java.net.UnknownHostException - if no IP address for the host could be found
java.io.IOException - if there is a problem with the networking layer

shutdownRegistry

public static void shutdownRegistry(Registry registry)
                             throws java.lang.IllegalStateException
Deprecated. You should call stop() on the registry to shutdown the registry instead of using this method.

Stops the given registry. This clears the LookupTable and stops the Dispatcher. After running this method, no further connection/communication is possible. You have to create again a registry to run server mode again.

Parameters:
registry - the registry to shut down
Throws:
java.lang.IllegalStateException

createRegistry

public static Registry createRegistry(java.net.InetAddress address,
                                      int port)
                               throws java.io.IOException,
                                      java.lang.IllegalArgumentException
Creates a registry listening on a specific network interface, identified by the given InetAddress with the last known worker thread pool size set by setWorkerThreadPoolSize(int)

Parameters:
address - the InetAddress the registry is bind to
port - the port the registry is bind to
Returns:
the created registry
Throws:
java.io.IOException - if there is a problem with the networking layer
java.lang.IllegalArgumentException - i.e. if specified protocol codec factory class cannot be used

createRegistry

public static Registry createRegistry(SslContextFactory sslContextFactory,
                                      java.net.InetAddress address,
                                      int port)
                               throws java.io.IOException,
                                      java.lang.IllegalArgumentException
Creates a registry listening on a specific network interface, identified by the given InetAddress with the last known worker thread pool size set by setWorkerThreadPoolSize(int). The communication is done via SSL encryption provided by the given SslContextFactory

Parameters:
sslContextFactory - the factory that provides the ssl context for the SSL powered registry
address - the InetAddress the registry is bind to
port - the port the registry is bind to
Returns:
the created registry
Throws:
java.io.IOException - if there is a problem with the networking layer
java.lang.IllegalArgumentException - i.e. if specified protocol codec factory class cannot be used

lookup

public static SimonRemote lookup(java.lang.String host,
                                 int port,
                                 java.lang.String remoteObjectName)
                          throws SimonRemoteException,
                                 java.io.IOException,
                                 EstablishConnectionFailed,
                                 LookupFailedException
Deprecated. Use Simon#createNameLookup() instead ...

Retrieves a remote object from the server. At least, it tries to retrieve it. This may fail if the named object is not available or if the connection could not be established.
Note: If your are finished with the remote object, don't forget to call release(Object) to decrease the reference count and finally release the connection to the server

Parameters:
host - hostname where the lookup takes place
port - port number of the simon remote registry
remoteObjectName - name of the remote object which is bind to the remote registry
Returns:
and instance of the remote object
Throws:
SimonRemoteException - if there's a problem with the simon communication
java.io.IOException - if there is a problem with the communication itself
EstablishConnectionFailed - if its not possible to establish a connection to the remote registry
LookupFailedException - if there's no such object on the server
java.lang.IllegalArgumentException - i.e. if specified protocol codec factory class cannot be used

lookup

public static SimonRemote lookup(java.net.InetAddress host,
                                 int port,
                                 java.lang.String remoteObjectName)
                          throws LookupFailedException,
                                 SimonRemoteException,
                                 java.io.IOException,
                                 EstablishConnectionFailed
Deprecated. Use Simon#createNameLookup() instead ...

Retrieves a remote object from the server. At least, it tries to retrieve it. This may fail if the named object is not available or if the connection could not be established.
Note: If your are finished with the remote object, don't forget to call release(Object) to decrease the reference count and finally release the connection to the server

Parameters:
host - host address where the lookup takes place
port - port number of the simon remote registry
remoteObjectName - name of the remote object which is bind to the remote registry
Returns:
and instance of the remote object
Throws:
SimonRemoteException - if there's a problem with the simon communication
java.io.IOException - if there is a problem with the communication itself
EstablishConnectionFailed - if its not possible to establish a connection to the remote registry
LookupFailedException - if there's no such object on the server
java.lang.IllegalArgumentException - i.e. if specified protocol codec factory class cannot be used

lookup

public static SimonRemote lookup(SslContextFactory sslContextFactory,
                                 SimonProxyConfig proxyConfig,
                                 java.net.InetAddress host,
                                 int port,
                                 java.lang.String remoteObjectName)
                          throws LookupFailedException,
                                 SimonRemoteException,
                                 java.io.IOException,
                                 EstablishConnectionFailed
Deprecated. Use Simon#createNameLookup() instead ...

Retrieves a remote object from the server. At least, it tries to retrieve it. This may fail if the named object is not available or if the connection could not be established.
Note: If your are finished with the remote object, don't forget to call release(Object) to decrease the reference count and finally release the connection to the server

Parameters:
sslContextFactory - the factory for creating the ssl context. No SSL is used if null is given!
proxyConfig - configuration details for connecting via proxy. No proxy is used if null is given!
host - host address where the lookup takes place
port - port number of the simon remote registry
remoteObjectName - name of the remote object which is bind to the remote registry
Returns:
and instance of the remote object
Throws:
SimonRemoteException - if there's a problem with the simon communication
java.io.IOException - if there is a problem with the communication itself
EstablishConnectionFailed - if its not possible to establish a connection to the remote registry
LookupFailedException - if there's no such object on the server
java.lang.IllegalArgumentException - i.e. if specified protocol codec factory class cannot be used *

lookup

public static SimonRemote lookup(SslContextFactory sslContextFactory,
                                 SimonProxyConfig proxyConfig,
                                 java.net.InetAddress host,
                                 int port,
                                 java.lang.String remoteObjectName,
                                 ClosedListener listener)
                          throws LookupFailedException,
                                 SimonRemoteException,
                                 java.io.IOException,
                                 EstablishConnectionFailed
Deprecated. Use Simon#createNameLookup() instead ...

Retrieves a remote object from the server. At least, it tries to retrieve it. This may fail if the named object is not available or if the connection could not be established.
Note: If your are finished with the remote object, don't forget to call release(Object) to decrease the reference count and finally release the connection to the server

Parameters:
sslContextFactory - the factory for creating the ssl context. No SSL is used if null is given!
proxyConfig - configuration details for connecting via proxy. No proxy is used if null is given!
host - host address where the lookup takes place
port - port number of the simon remote registry
remoteObjectName - name of the remote object which is bind to the remote registry
listener - a listener that get's notified if the remote object's connection is closed/released. No listener is used if null is given!
Returns:
and instance of the remote object
Throws:
SimonRemoteException - if there's a problem with the simon communication
java.io.IOException - if there is a problem with the communication itself
EstablishConnectionFailed - if its not possible to establish a connection to the remote registry
LookupFailedException - if there's no such object on the server
java.lang.IllegalArgumentException - i.e. if specified protocol codec factory class cannot be used

createInterfaceLookup

public static Lookup createInterfaceLookup(java.lang.String host,
                                           int port)
                                    throws java.net.UnknownHostException
Creates a interface lookup object that is used to lookup remote objects.
Lookup is made via a known interface of the remote object.

Parameters:
host - the name of the host on which the registry server runs
port - the port on which the registry server is listening
Returns:
the lookup object
Throws:
java.net.UnknownHostException - if the specified hostname is unknown

createInterfaceLookup

public static Lookup createInterfaceLookup(java.net.InetAddress address,
                                           int port)
Creates a interface lookup object that is used to lookup remote objects.
Lookup is made via a known interface of the remote object.

Parameters:
address - the address of the host on which the registry server runs
port - the port on which the registry server is listening
Returns:
the lookup object

createNameLookup

public static Lookup createNameLookup(java.lang.String host,
                                      int port)
                               throws java.net.UnknownHostException
Creates a name lookup object that is used to lookup remote objects.
Lookup is made via a known name of the remote object.

Parameters:
host - the name of the host on which the registry server runs
port - the port on which the registry server is listening
Returns:
the lookup object
Throws:
java.net.UnknownHostException - if the specified hostname is unknown
Since:
version 1.1.0

createNameLookup

public static Lookup createNameLookup(java.net.InetAddress address,
                                      int port)
Creates a name lookup object that is used to lookup remote objects.
Lookup is made via a known name of the remote object.

Parameters:
address - the address of the host on which the registry server runs
port - the port on which the registry server is listening
Returns:
the lookup object
Since:
version 1.1.0

getRemoteInetSocketAddress

public static java.net.InetSocketAddress getRemoteInetSocketAddress(java.lang.Object proxyObject)
Gets the InetSocketAddress used on the remote-side of the given proxy object

Parameters:
proxyObject - the proxy object
Returns:
the InetSocketAddress on the remote-side

getRemoteInetAddress

public static java.net.InetAddress getRemoteInetAddress(java.lang.Object proxyObject)
Deprecated. use Simon.getRemoteInetSocketAddress(Object).getAddress() instead!

Gets the socket-inetaddress used on the remote-side of the given proxy object

Parameters:
proxyObject - the proxy-object
Returns:
the InetAddress on the remote-side

getRemotePort

public static int getRemotePort(java.lang.Object proxyObject)
Deprecated. use Simon.getRemoteInetSocketAddress(proxyObject).getPort() instead!

Gets the socket-port used on the remote-side of the given proxy object

Parameters:
proxyObject - the proxy-object
Returns:
the port on the remote-side

getLocalInetSocketAddress

public static java.net.InetSocketAddress getLocalInetSocketAddress(java.lang.Object proxyObject)
Gets the InetSocketAddress used on the local-side of the given proxy object

Parameters:
proxyObject - the proxy object
Returns:
the InetSocketAddress on the local-side

getLocalPort

public static int getLocalPort(java.lang.Object proxyObject)
Deprecated. use Simon.getLocalInetSocketAddress(proxyObject).getPort() instead!

Gets the socket-port used on the local-side of the given proxy object

Parameters:
proxyObject - the proxy-object
Returns:
the port on the local-side

getSimonProxy

protected static SimonProxy getSimonProxy(java.lang.Object o)
                                   throws java.lang.IllegalArgumentException
Retrieves SimonProxy invocation handler wrapped in a simple proxy

Parameters:
o - the object that holds the proxy
Returns:
the extracted SimonProxy
Throws:
java.lang.IllegalArgumentException - if the object does not contain a SimonProxy invocation handler

getThreadPool

protected static java.util.concurrent.ExecutorService getThreadPool()
Returns the reference to the worker thread pool

Returns:
the threadPool

setWorkerThreadPoolSize

public static void setWorkerThreadPoolSize(int size)
Sets the size of the worker thread pool.
This will setting only affect new pool that have to be created in future. If given size has value -1, a new pool will create new threads as needed, but will reuse previously constructed threads when they are available. This is the most common setting. Old, for 60 seconds unused threads will be removed. These pools will typically improve the performance of programs that execute many short-lived asynchronous tasks. See documentation of Executors.newCachedThreadPool()
If size has value >=1, a new pool has a fixed size by the given value

Parameters:
size - the size of the used worker thread pool

setDgcInterval

public static void setDgcInterval(int milliseconds)
Deprecated. use setDefaultKeepAliveInterval(int) instead!

Sets the DGC's interval time in milliseconds

Parameters:
milliseconds - time in milliseconds

getDgcInterval

public static int getDgcInterval()
Deprecated. use getKeepAliveInterval() instead!

Gets the DGC's interval time in milliseconds

Returns:
the current set DGC interval

setDefaultKeepAliveInterval

public static void setDefaultKeepAliveInterval(int seconds)
Sets the keep alive default interval time in seconds. This value is used as a default value for all new connections.

Parameters:
seconds - time in seconds

getKeepAliveInterval

public static int getKeepAliveInterval()
Gets the default keep-alive interval time in seconds. This value is the used default value for all new connections.

Returns:
the current set keep alive interval

setDefaultKeepAliveTimeout

public static void setDefaultKeepAliveTimeout(int seconds)
Sets the default keep alive timeout time in seconds. This value is used as a default value for all new connections.

Parameters:
seconds - time in seconds

getDefaultKeepAliveTimeout

public static int getDefaultKeepAliveTimeout()
Gets the default network write timeout time in seconds. This value is the used default value for all new connections.

Returns:
the current set network write timeout

setKeepAliveInterval

public static void setKeepAliveInterval(java.lang.Object remoteObject,
                                        int seconds)
Sets the keep alive interval time in seconds for the specified remote object

Parameters:
remoteObject -
seconds - time in seconds
Throws:
java.lang.IllegalArgumentException - if the object is not a valid remote object

getKeepAliveInterval

public static int getKeepAliveInterval(java.lang.Object remoteObject)
Gets the keep alive interval time in seconds of the given remote object.

Parameters:
remoteObject -
Returns:
current set keep alive interval of given remote object
Throws:
java.lang.IllegalArgumentException - if the object is not a valid remote object

setKeepAliveTimeout

public static void setKeepAliveTimeout(java.lang.Object remoteObject,
                                       int seconds)
Sets the keep alive timeout time in seconds for the specified remote object.

Parameters:
remoteObject -
seconds - time in seconds
Throws:
java.lang.IllegalArgumentException - if the object is not a valid remote object

getKeepAliveTimeout

public static int getKeepAliveTimeout(java.lang.Object remoteObject)
                               throws java.lang.IllegalArgumentException
Gets the keep alive timeout time in seconds of the given remote object.

Parameters:
remoteObject -
Returns:
current set keep alive timeout of given remote object
Throws:
java.lang.IllegalArgumentException - if the object is not a valid remote object

publish

protected static void publish(SimonPublication simonPublication)
                       throws java.io.IOException
Publishes a remote object. If not already done, publish service thread is started.

Parameters:
simonPublication - the object to publish
Throws:
java.io.IOException - if the publish service cannot be started due to IO problems

unpublish

protected static boolean unpublish(SimonPublication simonPublication)
Unpublishs a already published SimonPublication. If there are no more publications available, shutdown the publish service.

Parameters:
simonPublication - the publication to unpublish
Returns:
true, if elemet was present and is now removed, false if not

searchRemoteObjects

public static PublicationSearcher searchRemoteObjects(SearchProgressListener listener,
                                                      int searchTime)
Creates a background thread that searches for published remote objects on the local network

Parameters:
listener - a SearchProgressListener implementation which is informed about the current search progress
searchTime - the time the background search thread spends for searching published remote objects
Returns:
a PublicationSearcher which is used to access the search result

searchRemoteObjects

public static java.util.List<SimonPublication> searchRemoteObjects(int searchTime)
Starts a search on the local network for published remote objects.
Be warned: This method blocks until the search is finished or the current thread is interrupted

Parameters:
searchTime - the time that is spend to search for published remote objects
Returns:
a List of SimonPublications

setProtocolCodecFactory

public static void setProtocolCodecFactory(java.lang.String protocolFactoryClassName)
                                    throws java.lang.InstantiationException,
                                           java.lang.IllegalAccessException,
                                           java.lang.ClassNotFoundException,
                                           java.lang.ClassCastException
Sets class name for the protocol codec factory to use for all future createRegistry() or lookup() calls. This does not affect already created registry or already established sessions.

Parameters:
protocolFactoryClassName - a class name like "com.mydomain.myproject.codec.mySimonProtocolCodecFactory" which points to a class, that extends SimonProtocolCodecFactory. The important thing is, that this class correctly overrides SimonProtocolCodecFactory.setup(boolean). For further details, look at SimonProtocolCodecFactory!
Throws:
java.lang.IllegalAccessException - if the class or its nullary constructor is not accessible.
java.lang.InstantiationException - if this Class represents an abstract class, an interface, an array class, a primitive type, or void; or if the class has no nullary constructor; or if the instantiation fails for some other reason.
java.lang.ClassNotFoundException - if the class is not found by the classloader. if so, please check your classpath.
java.lang.ClassCastException - if the given class is no instance of SimonProtocolCodecFactory

getProtocolCodecFactory

public static java.lang.String getProtocolCodecFactory()
Returns the current set class name for the protocol codec factory

Returns:
the name of the protocol codec class

getStatistics

public static SimonRemoteStatistics getStatistics(java.lang.Object remoteObject)
Returns a object that lets you get some network related information on the session of the given remote object (an instance of SimonProxy

Parameters:
remoteObject - the remote object that is asked for the statistics
Returns:
an implementation of SimonRemoteStatistics that gives access to the statistics data

openRawChannel

public static RawChannel openRawChannel(int channelToken,
                                        java.lang.Object simonRemote)
                                 throws SimonRemoteException
Opens a raw channel to transfer data from the current station to the remote station described by the given simonRemote

Parameters:
channelToken - a token that identifies the already prepared raw channel from the remote station. Those token can only be created on the remote station. Thus a remote call which does the prepareRawChannel(RawChannelDataListener, Object) is needed in advance.
simonRemote - the remote object which lives on the remote station which has a prepared raw data channel, related to the channelToken. Note: This has to be a remote object stub.
Returns:
the opened raw channel object
Throws:
SimonRemoteException

prepareRawChannel

public static int prepareRawChannel(RawChannelDataListener listener,
                                    java.lang.Object simonRemote)
                             throws SimonException
Prepare simonRemote's internal message dispatcher for receiving raw data.
The result of this method is a token, which identifies the channel on both sides:
This method has to be called on the receiving side.

Parameters:
listener - the listener which gets all the received data related to this channel
simonRemote - a reference to the remote object whos Dispatcher is prepared to receive raw data.
Returns:
a token that identifies the prepared channel
Throws:
SimonException

registerLookupTable

protected static void registerLookupTable(LookupTable lookupTable)
TODO document me

Parameters:
lookupTable -

unregisterLookupTable

protected static void unregisterLookupTable(LookupTable lookupTable)
TODO document me

Parameters:
lookupTable -

release

public static boolean release(java.lang.Object proxyObject)
Deprecated. Use Simon#createNameLookup() and AbstractLookup#release() instead ...

Release a lookup'ed object

Parameters:
proxyObject -
Returns:
true, if object could be released, false if not

markAsRemote

public static java.lang.Object markAsRemote(java.lang.Object o)
Marks the object with SimonRemote to make it able to receive incoming calls.

Parameters:
o - the object to mark as an SimonRemote
Returns:
a marked (proxy) class
Throws:
IllegalRemoteObjectException - thrown in case of missing interfaces of given object
Since:
1.1.0


Copyright © 2011. All Rights Reserved.