org.springframework.remoting.support

## Class RemoteInvocationBasedAccessor

- java.lang.Object
- - org.springframework.remoting.support.RemotingSupport
  - - org.springframework.remoting.support.RemoteAccessor
    - - org.springframework.remoting.support.UrlBasedRemoteAccessor
      - - org.springframework.remoting.support.RemoteInvocationBasedAccessor

- All Implemented Interfaces:
    Aware, BeanClassLoaderAware, InitializingBean
  Direct Known Subclasses:
    HttpInvokerClientInterceptor, RmiClientInterceptor

      public abstract class RemoteInvocationBasedAccessor
      extends UrlBasedRemoteAccessor

  Abstract base class for remote service accessors that are based on serialization of `RemoteInvocation` objects. Provides a "remoteInvocationFactory" property, with a `DefaultRemoteInvocationFactory` as default strategy.
  Since:
    1.1
  Author:
    Juergen Hoeller
  See Also:
    `setRemoteInvocationFactory(org.springframework.remoting.support.RemoteInvocationFactory)`, `RemoteInvocation`, `RemoteInvocationFactory`, `DefaultRemoteInvocationFactory`

- - ### Field Summary

    - ### Fields inherited from class org.springframework.remoting.support.RemotingSupport

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RemoteInvocationBasedAccessor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected RemoteInvocation` | `createRemoteInvocation(MethodInvocation methodInvocation)` Create a new RemoteInvocation object for the given AOP method invocation.
    `RemoteInvocationFactory` | `getRemoteInvocationFactory()` Return the RemoteInvocationFactory used by this accessor.
    `protected Object` | `recreateRemoteInvocationResult(RemoteInvocationResult result)` Recreate the invocation result contained in the given RemoteInvocationResult object.
    `void` | `setRemoteInvocationFactory(RemoteInvocationFactory remoteInvocationFactory)` Set the RemoteInvocationFactory to use for this accessor.

    - ### Methods inherited from class org.springframework.remoting.support.UrlBasedRemoteAccessor

      `afterPropertiesSet, getServiceUrl, setServiceUrl`

    - ### Methods inherited from class org.springframework.remoting.support.RemoteAccessor

      `getServiceInterface, 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

    - #### RemoteInvocationBasedAccessor

          public RemoteInvocationBasedAccessor()

  - ### Method Detail

    - #### setRemoteInvocationFactory

          public void setRemoteInvocationFactory(RemoteInvocationFactory remoteInvocationFactory)

      Set the RemoteInvocationFactory to use for this accessor. Default is a `DefaultRemoteInvocationFactory`.

      A custom invocation factory can add further context information to the invocation, for example user credentials.

    - #### getRemoteInvocationFactory

          public RemoteInvocationFactory getRemoteInvocationFactory()

      Return the RemoteInvocationFactory used by this accessor.

    - #### createRemoteInvocation

          protected RemoteInvocation createRemoteInvocation(MethodInvocation methodInvocation)

      Create a new RemoteInvocation object for the given AOP method invocation.

      The default implementation delegates to the configured `RemoteInvocationFactory`. This can be overridden in subclasses in order to provide custom RemoteInvocation subclasses, containing additional invocation parameters (e.g. user credentials).

      Note that it is preferable to build a custom RemoteInvocationFactory as a reusable strategy, instead of overriding this method.

      Parameters:
        `methodInvocation` - the current AOP method invocation
      Returns:
        the RemoteInvocation object
      See Also:
        `RemoteInvocationFactory.createRemoteInvocation(org.aopalliance.intercept.MethodInvocation)`

    - #### recreateRemoteInvocationResult

          protected Object recreateRemoteInvocationResult(RemoteInvocationResult result)
                                                   throws Throwable

      Recreate the invocation result contained in the given RemoteInvocationResult object.

      The default implementation calls the default `recreate()` method. This can be overridden in subclass to provide custom recreation, potentially processing the returned result object.

      Parameters:
        `result` - the RemoteInvocationResult to recreate
      Returns:
        a return value if the invocation result is a successful return
      Throws:
        `Throwable` - if the invocation result is an exception
      See Also:
        `RemoteInvocationResult.recreate()`