The Spring Framework

org.springframework.remoting.rmi
Class RmiBasedExporter

java.lang.Object
  extended by org.springframework.remoting.support.RemotingSupport
      extended by org.springframework.remoting.support.RemoteExporter
          extended by org.springframework.remoting.support.RemoteInvocationBasedExporter
              extended by org.springframework.remoting.rmi.RmiBasedExporter
All Implemented Interfaces:
BeanClassLoaderAware
Direct Known Subclasses:
JndiRmiServiceExporter, RmiServiceExporter

public abstract class RmiBasedExporter
extends RemoteInvocationBasedExporter

Convenient superclass for RMI-based remote exporters. Provides a facility to automatically wrap a given plain Java service object with am RmiInvocationWrapper, exposing the RmiInvocationHandler interface.

With an RMI invoker, RMI communication works on the RmiInvocationHandler level, needing only one stub for any service. Service interfaces do not have to extend java.rmi.Remote or throw java.rmi.RemoteException on all methods, but in and out parameters have to be serializable.

Since:
1.2.5
Author:
Juergen Hoeller
See Also:
RmiServiceExporter, JndiRmiServiceExporter

Field Summary
 
Fields inherited from class org.springframework.remoting.support.RemotingSupport
logger
 
Constructor Summary
RmiBasedExporter()
           
 
Method Summary
protected  Remote getObjectToExport()
          Determine the object to export: either the service object itself or a RmiInvocationWrapper in case of a non-RMI service object.
protected  Object invoke(RemoteInvocation invocation, Object targetObject)
          Redefined here to be visible to RmiInvocationWrapper.
 
Methods inherited from class org.springframework.remoting.support.RemoteInvocationBasedExporter
getRemoteInvocationExecutor, invokeAndCreateResult, setRemoteInvocationExecutor
 
Methods inherited from class org.springframework.remoting.support.RemoteExporter
checkService, checkServiceInterface, getExporterName, getProxyForService, getService, getServiceInterface, isRegisterTraceInterceptor, setRegisterTraceInterceptor, setService, setServiceInterface
 
Methods inherited from class org.springframework.remoting.support.RemotingSupport
getBeanClassLoader, overrideThreadContextClassLoader, resetThreadContextClassLoader, setBeanClassLoader
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RmiBasedExporter

public RmiBasedExporter()
Method Detail

getObjectToExport

protected Remote getObjectToExport()
Determine the object to export: either the service object itself or a RmiInvocationWrapper in case of a non-RMI service object.

Returns:
the RMI object to export
See Also:
RemoteExporter.setService(java.lang.Object), RemoteExporter.setServiceInterface(java.lang.Class)

invoke

protected Object invoke(RemoteInvocation invocation,
                        Object targetObject)
                 throws NoSuchMethodException,
                        IllegalAccessException,
                        InvocationTargetException
Redefined here to be visible to RmiInvocationWrapper. Simply delegates to the corresponding superclass method.

Overrides:
invoke in class RemoteInvocationBasedExporter
Parameters:
invocation - the remote invocation
targetObject - the target object to apply the invocation to
Returns:
the invocation result
Throws:
NoSuchMethodException - if the method name could not be resolved
IllegalAccessException - if the method could not be accessed
InvocationTargetException - if the method invocation resulted in an exception
See Also:
RemoteInvocationExecutor.invoke(org.springframework.remoting.support.RemoteInvocation, java.lang.Object)

The Spring Framework

Copyright © 2002-2008 The Spring Framework.