org.springframework.remoting.support
Class RemoteInvocationBasedExporter

java.lang.Object
  extended by org.springframework.remoting.support.RemotingSupport
      extended by org.springframework.remoting.support.RemoteExporter
          extended by org.springframework.remoting.support.RemoteInvocationBasedExporter
All Implemented Interfaces:
BeanClassLoaderAware
Direct Known Subclasses:
JmsInvokerServiceExporter, RemoteInvocationSerializingExporter, RmiBasedExporter

public abstract class RemoteInvocationBasedExporter
extends RemoteExporter

Abstract base class for remote service exporters that are based on deserialization of RemoteInvocation objects.

Provides a "remoteInvocationExecutor" property, with a DefaultRemoteInvocationExecutor as default strategy.

Since:
1.1
Author:
Juergen Hoeller
See Also:
RemoteInvocationExecutor, DefaultRemoteInvocationExecutor

Field Summary
 
Fields inherited from class org.springframework.remoting.support.RemotingSupport
logger
 
Constructor Summary
RemoteInvocationBasedExporter()
           
 
Method Summary
 RemoteInvocationExecutor getRemoteInvocationExecutor()
          Return the RemoteInvocationExecutor used by this exporter.
protected  Object invoke(RemoteInvocation invocation, Object targetObject)
          Apply the given remote invocation to the given target object.
protected  RemoteInvocationResult invokeAndCreateResult(RemoteInvocation invocation, Object targetObject)
          Apply the given remote invocation to the given target object, wrapping the invocation result in a serializable RemoteInvocationResult object.
 void setRemoteInvocationExecutor(RemoteInvocationExecutor remoteInvocationExecutor)
          Set the RemoteInvocationExecutor to use for this exporter.
 
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

RemoteInvocationBasedExporter

public RemoteInvocationBasedExporter()
Method Detail

setRemoteInvocationExecutor

public void setRemoteInvocationExecutor(RemoteInvocationExecutor remoteInvocationExecutor)
Set the RemoteInvocationExecutor to use for this exporter. Default is a DefaultRemoteInvocationExecutor.

A custom invocation executor can extract further context information from the invocation, for example user credentials.


getRemoteInvocationExecutor

public RemoteInvocationExecutor getRemoteInvocationExecutor()
Return the RemoteInvocationExecutor used by this exporter.


invoke

protected Object invoke(RemoteInvocation invocation,
                        Object targetObject)
                 throws NoSuchMethodException,
                        IllegalAccessException,
                        InvocationTargetException
Apply the given remote invocation to the given target object. The default implementation delegates to the RemoteInvocationExecutor.

Can be overridden in subclasses for custom invocation behavior, possibly for applying additional invocation parameters from a custom RemoteInvocation subclass. Note that it is preferable to use a custom RemoteInvocationExecutor which is a reusable strategy.

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)

invokeAndCreateResult

protected RemoteInvocationResult invokeAndCreateResult(RemoteInvocation invocation,
                                                       Object targetObject)
Apply the given remote invocation to the given target object, wrapping the invocation result in a serializable RemoteInvocationResult object. The default implementation creates a plain RemoteInvocationResult.

Can be overridden in subclasses for custom invocation behavior, for example to return additional context information. Note that this is not covered by the RemoteInvocationExecutor strategy!

Parameters:
invocation - the remote invocation
targetObject - the target object to apply the invocation to
Returns:
the invocation result
See Also:
invoke(org.springframework.remoting.support.RemoteInvocation, java.lang.Object)