## org.springframework.remoting.rmi
Class RmiBasedExporter

    java.lang.Object
      org.springframework.remoting.support.RemotingSupport
          org.springframework.remoting.support.RemoteExporter
              org.springframework.remoting.support.RemoteInvocationBasedExporter
                  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)`