org.springframework.remoting.rmi
abstract public class: RmiBasedExporter [javadoc |
source]
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
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.
| Method from org.springframework.remoting.rmi.RmiBasedExporter Detail: |
protected Remote getObjectToExport() {
// determine remote object
if (getService() instanceof Remote &&
(getServiceInterface() == null || Remote.class.isAssignableFrom(getServiceInterface()))) {
// conventional RMI service
return (Remote) getService();
}
else {
// RMI invoker
if (logger.isDebugEnabled()) {
logger.debug("RMI service [" + getService() + "] is an RMI invoker");
}
return new RmiInvocationWrapper(getProxyForService(), this);
}
}
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) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException {
return super.invoke(invocation, targetObject);
}
Redefined here to be visible to RmiInvocationWrapper.
Simply delegates to the corresponding superclass method. |