org.springframework.remoting.support
Class RemoteInvocationBasedAccessor

java.lang.Object
  extended by org.springframework.remoting.support.RemotingSupport
      extended by org.springframework.remoting.support.RemoteAccessor
          extended by org.springframework.remoting.support.UrlBasedRemoteAccessor
              extended by 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
RemoteInvocationBasedAccessor()
           
 
Method Summary
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()