| org.springframework.remoting.rmi.RmiBasedExporter org.springframework.remoting.rmi.RmiServiceExporter
RmiServiceExporter | public class RmiServiceExporter extends RmiBasedExporter implements InitializingBean,DisposableBean(Code) | | 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 and Burlap, is serialization.
Effectively, any serializable Java object can be transported without hassle.
Hessian and Burlap have their own (de-)serialization mechanisms, but are
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
author: Juergen Hoeller since: 13.05.2003 See Also: RmiClientInterceptor See Also: RmiProxyFactoryBean See Also: java.rmi.Remote See Also: java.rmi.RemoteException See Also: org.springframework.remoting.caucho.HessianServiceExporter See Also: org.springframework.remoting.caucho.BurlapServiceExporter See Also: org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter |
Method Summary | |
public void | afterPropertiesSet() | public void | destroy() Unbind the RMI service from the registry on bean factory shutdown. | protected Registry | getRegistry(String registryHost, int registryPort, RMIClientSocketFactory clientSocketFactory, RMIServerSocketFactory serverSocketFactory) Locate or create the RMI registry for this exporter. | protected Registry | getRegistry(int registryPort, RMIClientSocketFactory clientSocketFactory, RMIServerSocketFactory serverSocketFactory) Locate or create the RMI registry for this exporter. | protected Registry | getRegistry(int registryPort) Locate or create the RMI registry for this exporter. | public void | prepare() Initialize this service exporter, registering the service as RMI object. | 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". | public void | setClientSocketFactory(RMIClientSocketFactory clientSocketFactory) Set a custom RMI client socket factory to use for exporting the service. | public void | setRegistry(Registry registry) Specify the RMI registry to register the exported service with. | public void | setRegistryClientSocketFactory(RMIClientSocketFactory registryClientSocketFactory) Set a custom RMI client socket factory to use for the RMI registry. | public void | setRegistryHost(String registryHost) Set the host of the registry for the exported RMI service,
i.e. | public void | setRegistryPort(int registryPort) Set the port of the registry for the exported RMI service,
i.e. | public void | setRegistryServerSocketFactory(RMIServerSocketFactory registryServerSocketFactory) Set a custom RMI server socket factory to use for the RMI registry. | 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. | public void | setServerSocketFactory(RMIServerSocketFactory serverSocketFactory) Set a custom RMI server socket factory to use for exporting the service. | public void | setServiceName(String serviceName) Set the name of the exported RMI service,
i.e. | public void | setServicePort(int servicePort) Set the port that the exported RMI service will use. | protected void | testRegistry(Registry registry) Test the given RMI registry, calling some operation on it to
check whether it is still active. |
destroy | public void destroy() throws RemoteException(Code) | | Unbind the RMI service from the registry on bean factory shutdown.
|
getRegistry | protected Registry getRegistry(String registryHost, int registryPort, RMIClientSocketFactory clientSocketFactory, RMIServerSocketFactory serverSocketFactory) throws RemoteException(Code) | | Locate or create the RMI registry for this exporter.
Parameters: registryHost - the registry host to use (if this is specified,no implicit creation of a RMI registry will happen) Parameters: registryPort - the registry port to use Parameters: clientSocketFactory - the RMI client socket factory for the registry (if any) Parameters: serverSocketFactory - the RMI server socket factory for the registry (if any) the RMI registry throws: RemoteException - if the registry couldn't be located or created |
getRegistry | protected Registry getRegistry(int registryPort, RMIClientSocketFactory clientSocketFactory, RMIServerSocketFactory serverSocketFactory) throws RemoteException(Code) | | Locate or create the RMI registry for this exporter.
Parameters: registryPort - the registry port to use Parameters: clientSocketFactory - the RMI client socket factory for the registry (if any) Parameters: serverSocketFactory - the RMI server socket factory for the registry (if any) the RMI registry throws: RemoteException - if the registry couldn't be located or created |
getRegistry | protected Registry getRegistry(int registryPort) throws RemoteException(Code) | | Locate or create the RMI registry for this exporter.
Parameters: registryPort - the registry port to use the RMI registry throws: RemoteException - if the registry couldn't be located or created |
prepare | public void prepare() throws RemoteException(Code) | | Initialize this service exporter, registering the service as RMI object.
Creates an RMI registry on the specified port if none exists.
throws: RemoteException - if service registration failed |
setAlwaysCreateRegistry | public void setAlwaysCreateRegistry(boolean alwaysCreateRegistry)(Code) | | 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.
|
setRegistryHost | public void setRegistryHost(String registryHost)(Code) | | Set the host of the registry for the exported RMI service,
i.e. rmi://HOST:port/name
Default is localhost.
|
setRegistryPort | public void setRegistryPort(int registryPort)(Code) | | Set the port of the registry for the exported RMI service,
i.e. rmi://host:PORT/name
Default is Registry.REGISTRY_PORT (1099).
See Also: java.rmi.registry.Registry.REGISTRY_PORT |
setReplaceExistingBinding | public void setReplaceExistingBinding(boolean replaceExistingBinding)(Code) | | 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.
|
setServiceName | public void setServiceName(String serviceName)(Code) | | Set the name of the exported RMI service,
i.e. rmi://host:port/NAME
|
setServicePort | public void setServicePort(int servicePort)(Code) | | Set the port that the exported RMI service will use.
Default is 0 (anonymous port).
|
|
|