The Spring Framework

## 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 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.