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 an RmiInvocationWrapper, exposing the RmiInvocationHandler remote interface.

Using the RMI invoker mechanism, RMI communication operates at the RmiInvocationHandler level, sharing a common invoker stub for any number of services. Service interfaces are not required to extend java.rmi.Remote or declare java.rmi.RemoteException on all service methods. However, in and out parameters still 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, setInterceptors, 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)