java.rmi.registry.Registry interface and the
java.rmi.registry.LocateRegistry class to provide a well-known
bootstrap service for retrieving and registering objects by simple names. Any
server process can support its own registry or a single registry can be used for
a host.
A registry is a remote object that maps names to remote objects. A registry can be used in a virtual machine with other server classes or standalone.
The methods of LocateRegistry are used to get a registry operating on a
particular host or host and port.
java.rmi.registry.Registry remote interface provides methods for
lookup, binding, rebinding, unbinding, and listing the contents of a registry.
The java.rmi.Naming class uses the registry remote interface to provide
URL-based naming.
package java.rmi.registry;
public interface Registry extends java.rmi.Remote
{
public static final int REGISTRY_PORT = 1099; public java.rmi.Remote lookup(String name) throws java.rmi.RemoteException, java.rmi.NotBoundException, java.rmi.AccessException; public void bind(String name, java.rmi.Remote obj) throws java.rmi.RemoteException, java.rmi.AlreadyBoundException, java.rmi.AccessException; public void rebind(String name, java.rmi.Remote obj) throws java.rmi.RemoteException, java.rmi.AccessException; public void unbind(String name) throws java.rmi.RemoteException, java.rmi.NotBoundException, java.rmi.AccessException; public String[] list() throws java.rmi.RemoteException, java.rmi.AccessException; }
REGISTRY_PORT is the default port of the registry.
The lookup method returns the remote object bound to the specified name. The
remote object implements a set of remote interfaces. Clients can cast the remote
object to the expected remote interface. (This cast can fail in the usual ways
that casts can fail in the Java language.)
The bind method associates the name with the remote object, obj. If the name is
already bound to an object the AlreadyBoundExcepton is thrown.
The rebind method associates the name with the remote object, obj. Any
previous binding of the name is discarded.
The unbind method removes the binding between the name and the remote
object, obj. If the name is not already bound to an object the
NotBoundException is thrown.
The list method returns an array of Strings containing a snapshot of the
names bound in the registry. The return value contains a snapshot of the
contents of the registry.
Clients can access the registry either by using the LocateRegistry and
Registry interfaces or by using the methods of the URL-based
java.rmi.Naming class. The registry supports bind, unbind, and rebind
only from clients on the same host as the server; a lookup can be done from
any host.
java.rmi.registry.LocateRegistry contains static methods
that return a reference to a registry on the current host, current host at
specified port, a specified host or at a particular port on a specified host. What
is returned is the remote stub for the registry with the specified host and port
information. No remote operations need be performed to obtain a reference
(stub) for any registry on any host.
package java.rmi.registry;
public final class LocateRegistry {
public static Registry getRegistry()
throws java.rmi.RemoteException;
public static Registry getRegistry(int port)
throws java.rmi.RemoteException;
public static Registry getRegistry(String host)
throws java.rmi.RemoteException,
java.rmi.UnknownHostException;
public static Registry getRegistry(String host, int port)
throws java.rmi.RemoteException,
java.rmi.UnknownHostException;
public static Registry createRegistry(int port)
throws java.rmi.RemoteException;
}
createRegistry method creates and exports a registry on the local host
on the specified port. The registry implements a simple flat naming syntax that
binds the name of a remote object (a string) to a remote object reference. The
name and remote object bindings are not remembered across server restarts.
Starting a registry with the createRegistry method does not keep
the server process alive.
RegistryHandler is used to interface to the private
implementation.
package java.rmi.registry;
public interface RegistryHandler {
Registry registryStub(String host, int port)
throws java.rmi.RemoteException,
java.rmi.UnknownHostException;
Registry registryImpl(int port)
throws java.rmi.RemoteException;
}
registryStub returns a stub for contacting a remote registry on
the specified host and port.
The method registryImpl constructs and exports a registry on the specified
port. The port must be nonzero.