001: /*
002: * @(#)Registry.java 1.8 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027:
028: package java.rmi.registry;
029:
030: import java.rmi.*;
031:
032: /**
033: * For obtaining references to remote objects, RMI provides a simple
034: * remote object registry interface, implemented by RMI's
035: * <code>rmiregistry</code>, that provides methods for storing and retrieving
036: * remote object references. The <code>java.rmi.Naming</code> class
037: * provides methods to access a remote object registry using URL-formatted
038: * names to specify in a compact format both the remote registry along
039: * with the name for the remote object.
040: *
041: * <p>Typically a "registry" exists on every node that allows RMI connections
042: * to servers on that node. A registry on a particular node contains a
043: * transient database that maps names to remote objects. When a registry
044: * starts up, the registry database is empty. The names stored in the
045: * registry are pure and are not parsed. A service storing itself in the
046: * registry may want to prefix its name of the service by a package name
047: * (although not required), to reduce name collisions in the registry.
048: *
049: * <p>To create a registry that runs in an application, use one of the
050: * <code>LocateRegistry.createRegistry</code> methods. To obtain a reference
051: * to a remote object registry, use one of the
052: * <code>LocateRegistry.getRegistry</code> methods.
053: *
054: * @version 1.13, 02/02/00
055: * @author Ann Wollrath
056: * @since JDK1.1
057: * @see java.rmi.Naming
058: * @see java.rmi.registry.LocateRegistry
059: */
060: public interface Registry extends Remote {
061: /** Well known port for registry. */
062: public static final int REGISTRY_PORT = 1099;
063:
064: /**
065: * Returns a reference, a stub, for the remote object associated
066: * with the specified <code>name</code>.
067: *
068: * @param name a URL-formatted name for the remote object
069: * @return a reference for a remote object
070: * @exception NotBoundException if name is not currently bound
071: * @exception RemoteException if registry could not be contacted
072: * @exception AccessException if this operation is not permitted (if
073: * originating from a non-local host, for example)
074: * @since JDK1.1
075: */
076: public Remote lookup(String name) throws RemoteException,
077: NotBoundException, AccessException;
078:
079: /**
080: * Binds the specified <code>name</code> to a remote object.
081: *
082: * @param name a URL-formatted name for the remote object
083: * @param obj a reference for the remote object (usually a stub)
084: * @exception AlreadyBoundException if name is already bound
085: * @exception MalformedURLException if the name is not an appropriately
086: * formatted URL
087: * @exception RemoteException if registry could not be contacted
088: * @exception AccessException if this operation is not permitted (if
089: * originating from a non-local host, for example)
090: * @since JDK1.1
091: */
092: public void bind(String name, Remote obj) throws RemoteException,
093: AlreadyBoundException, AccessException;
094:
095: /**
096: * Destroys the binding for the specified name that is associated
097: * with a remote object.
098: *
099: * @param name a URL-formatted name associated with a remote object
100: * @exception NotBoundException if name is not currently bound
101: * @exception MalformedURLException if the name is not an appropriately
102: * formatted URL
103: * @exception RemoteException if registry could not be contacted
104: * @exception AccessException if this operation is not permitted (if
105: * originating from a non-local host, for example)
106: * @since JDK1.1
107: */
108: public void unbind(String name) throws RemoteException,
109: NotBoundException, AccessException;
110:
111: /**
112: * Rebinds the specified name to a new remote object. Any existing
113: * binding for the name is replaced.
114: *
115: * @param name a URL-formatted name associated with the remote object
116: * @param obj new remote object to associate with the name
117: * @exception MalformedURLException if the name is not an appropriately
118: * formatted URL
119: * @exception RemoteException if registry could not be contacted
120: * @exception AccessException if this operation is not permitted (if
121: * originating from a non-local host, for example)
122: * @since JDK1.1
123: */
124: public void rebind(String name, Remote obj) throws RemoteException,
125: AccessException;
126:
127: /**
128: * Returns an array of the names bound in the registry. The names are
129: * URL-formatted strings. The array contains a snapshot of the names
130: * present in the registry at the time of the call.
131: *
132: * @return an array of names (in the appropriate URL format) bound
133: * in the registry
134: * @exception RemoteException if registry could not be contacted
135: * @exception AccessException if this operation is not permitted (if
136: * originating from a non-local host, for example)
137: * @since JDK1.1
138: */
139: public String[] list() throws RemoteException, AccessException;
140: }
|