RMI exporter that exposes the specified service as RMI object with the specified name.
Such services can be accessed via plain RMI or via RmiProxyFactoryBean.
Also supports exposing any non-RMI service via RMI invokers, to be accessed via
RmiClientInterceptor / RmiProxyFactoryBean's automatic detection
of such invokers.
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.
The major advantage of RMI, compared to Hessian, is serialization.
Effectively, any serializable Java object can be transported without hassle.
Hessian has its own (de-)serialization mechanisms, but is HTTP-based and thus
much easier to setup than RMI. Alternatively, consider Spring's HTTP invoker
to combine Java serialization with HTTP-based transport.
Note: RMI makes a best-effort attempt to obtain the fully qualified host name.
If one cannot be determined, it will fall back and use the IP address. Depending
on your network configuration, in some cases it will resolve the IP to the loopback
address. To ensure that RMI will use the host name bound to the correct network
interface, you should pass the java.rmi.server.hostname property to the
JVM that will export the registry and/or the service using the "-D" JVM argument.
For example: -Djava.rmi.server.hostname=myserver.com
public void setAlwaysCreateRegistry(boolean alwaysCreateRegistry)
Set whether to always create the registry in-process,
not attempting to locate an existing registry at the specified port.
Default is "false". Switch this flag to "true" in order to avoid
the overhead of locating an existing registry when you always
intend to create a new registry in any case.
public void setReplaceExistingBinding(boolean replaceExistingBinding)
Set whether to replace an existing binding in the RMI registry,
that is, whether to simply override an existing binding with the
specified service in case of a naming conflict in the registry.
Default is "true", assuming that an existing binding for this
exporter's service name is an accidental leftover from a previous
execution. Switch this to "false" to make the exporter fail in such
a scenario, indicating that there was already an RMI object bound.
public void afterPropertiesSet()