You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by bu...@apache.org on 2010/12/24 21:38:02 UTC
svn commit: r781476 [5/10] -
/websites/staging/river/trunk/content/river/doc/api/net/jini/discovery/
Added: websites/staging/river/trunk/content/river/doc/api/net/jini/discovery/LookupDiscovery.html
==============================================================================
--- websites/staging/river/trunk/content/river/doc/api/net/jini/discovery/LookupDiscovery.html (added)
+++ websites/staging/river/trunk/content/river/doc/api/net/jini/discovery/LookupDiscovery.html Fri Dec 24 20:38:01 2010
@@ -0,0 +1,1284 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_15) on Mon Mar 08 17:46:16 EST 2010 -->
+<TITLE>
+LookupDiscovery (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="net.jini.discovery.LookupDiscovery class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="LookupDiscovery (Apache River v2.1.2-SNAPSHOT API Documentation)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/LookupDiscovery.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../net/jini/discovery/IncomingUnicastResponse.html" title="class in net.jini.discovery"><B>PREV CLASS</B></A>
+ <A HREF="../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?net/jini/discovery/LookupDiscovery.html" target="_top"><B>FRAMES</B></A>
+ <A HREF="LookupDiscovery.html" target="_top"><B>NO FRAMES</B></A>
+ <SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY: NESTED | <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+net.jini.discovery</FONT>
+<BR>
+Class LookupDiscovery</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+ <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>net.jini.discovery.LookupDiscovery</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html" title="interface in net.jini.discovery">DiscoveryGroupManagement</A>, <A HREF="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public class <B>LookupDiscovery</B><DT>extends <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <A HREF="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</A>, <A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html" title="interface in net.jini.discovery">DiscoveryGroupManagement</A></DL>
+</PRE>
+
+<P>
+This class is a helper utility class that encapsulates the functionality
+ required of an entity that wishes to employ multicast discovery to
+ find lookup services located within the entity's "multicast radius"
+ (roughly, the number of hops beyond which neither the multicast requests
+ from the entity, nor the multicast announcements from the lookup service,
+ will propagate). This class helps make the process of acquiring references
+ to lookup services - based on no information other than lookup service
+ group membership - much simpler for both services and clients.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+ <DD>Sun Microsystems, Inc.</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup"><CODE>ServiceRegistrar</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryChangeListener.html" title="interface in net.jini.discovery"><CODE>DiscoveryChangeListener</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><CODE>DiscoveryManagement</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html" title="interface in net.jini.discovery"><CODE>DiscoveryGroupManagement</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryListener.html" title="interface in net.jini.discovery"><CODE>DiscoveryListener</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryEvent.html" title="class in net.jini.discovery"><CODE>DiscoveryEvent</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryPermission.html" title="class in net.jini.discovery"><CODE>DiscoveryPermission</CODE></A><DT><B>Implementation Specifics:</B></DT>
+ <DD><!-- Implementation Specifics -->
+
+ The following implementation-specific items are discussed below:
+ <ul><li> <a href="#ldConfigEntries">Configuring LookupDiscovery</a>
+ <li> <a href="#ldLogging">Logging</a>
+ </ul>
+
+ <a name="ldConfigEntries">
+ <p>
+ <b><font size="+1">Configuring LookupDiscovery</font></b>
+ <p>
+ </a>
+
+ This implementation of <code>LookupDiscovery</code> supports the
+ following configuration entries; where each configuration entry name
+ is associated with the component name
+ <code>net.jini.discovery.LookupDiscovery</code>. Note that the
+ configuration entries specified here are specific to this implementation
+ of <code>LookupDiscovery</code>. Unless otherwise stated, each entry
+ is retrieved from the configuration only once per instance of this
+ utility, where each such retrieval is performed in the constructor.
+
+ <a name="discoveryConstraints">
+ <table summary="Describes the discoveryConstraints
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>discoveryConstraints</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint"><CODE>MethodConstraints</CODE></A>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>null</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> Constraints to apply to the multicast request, multicast
+ announcement and unicast discovery protocols. Multicast
+ request constraints are derived by calling
+ <A HREF="../../../net/jini/core/constraint/MethodConstraints.html#getConstraints(java.lang.reflect.Method)"><CODE>getConstraints</CODE></A> on the
+ obtained <code>MethodConstraints</code> instance with a
+ <code>Method</code> object for the
+ <A HREF="../../../com/sun/jini/discovery/DiscoveryConstraints.html#multicastRequest()"><CODE>multicastRequest</CODE></A> method; multicast announcement and unicast
+ discovery constraints are similarly obtained by passing
+ <code>Method</code> objects for the
+ <A HREF="../../../com/sun/jini/discovery/DiscoveryConstraints.html#multicastAnnouncement()"><CODE>multicastAnnouncement</CODE></A> and
+ <A HREF="../../../com/sun/jini/discovery/DiscoveryConstraints.html#unicastDiscovery()"><CODE>unicastDiscovery</CODE></A> methods, respectively. A <code>null</code>
+ value is interpreted as mapping all methods to empty
+ constraints.
+ <p>
+ This class supports the use of the following constraint types
+ to control discovery behavior:
+ <ul>
+ <li> <A HREF="../../../com/sun/jini/discovery/DiscoveryProtocolVersion.html" title="class in com.sun.jini.discovery"><CODE>DiscoveryProtocolVersion</CODE></A>:
+ this constraint can be used to control which version(s)
+ of the multicast request, multicast announcement and
+ unicast discovery protocols are used.
+ <li> <A HREF="../../../com/sun/jini/discovery/MulticastMaxPacketSize.html" title="class in com.sun.jini.discovery"><CODE>MulticastMaxPacketSize</CODE></A>:
+ this constraint can be used to control the maximum size
+ of multicast request packets to send; it can also be
+ used to specify the size of the buffer used to receive
+ incoming multicast announcement packets.
+ <li> <A HREF="../../../com/sun/jini/discovery/MulticastTimeToLive.html" title="class in com.sun.jini.discovery"><CODE>MulticastTimeToLive</CODE></A>: this
+ constraint can be used to control the time to live (TTL)
+ value set on outgoing multicast request packets.
+ <li> <A HREF="../../../com/sun/jini/discovery/UnicastSocketTimeout.html" title="class in com.sun.jini.discovery"><CODE>UnicastSocketTimeout</CODE></A>:
+ this constraint can be used to control the read timeout
+ set on sockets over which unicast discovery is
+ performed.
+ <li> <A HREF="../../../net/jini/core/constraint/ConnectionRelativeTime.html" title="class in net.jini.core.constraint"><CODE>ConnectionRelativeTime</CODE></A>:
+ this constraint can be used to control the relative
+ connection timeout set on sockets over which unicast
+ discovery is performed.
+ <li> <A HREF="../../../net/jini/core/constraint/ConnectionAbsoluteTime.html" title="class in net.jini.core.constraint"><CODE>ConnectionAbsoluteTime</CODE></A>:
+ this constraint can be used to control the absolute
+ connection timeout set on sockets over which unicast
+ discovery is performed.
+ </ul>
+ Constraints other than those listed above are passed on to the
+ underlying implementations of versions 1 and 2 of the discovery
+ protocols.
+ </table>
+
+ <a name="finalMulticastRequestInterval">
+ <table summary="Describes the finalMulticastRequestInterval
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>finalMulticastRequestInterval</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>2*60*1000 (2 minutes)</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> With respect to when this utility is started, as well
+ as when the set of groups to discover is changed, this
+ entry represents the number of milliseconds to wait
+ after sending the n-th multicast request where n is
+ equal to the value of the <a href="#multicastRequestMax">
+ <code>multicastRequestMax</code></a> entry of this component.
+ </table>
+ <a name="initialMulticastRequestDelayRange">
+ <table summary="Describes the initialMulticastRequestDelayRange
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>initialMulticastRequestDelayRange</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>0 milliseconds</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> With respect to when this utility is started, this entry controls
+ how long to wait before sending out the first multicast request.
+ If the value is positive, the first request will be delayed by a random
+ value between <code>0</code> and
+ <code>initialMulticastRequestDelayRange</code>
+ milliseconds. Subsequent request intervals are controlled by the
+ <a href="#multicastRequestInterval">
+ <code>multicastRequestInterval</code></a> entry. Note that this entry
+ only has effect when this utility is initialized. The first multicast
+ request is not delayed if the groups to discover are subsequently
+ changed.
+ </table>
+ <a name="multicastAnnouncementInterval">
+ <table summary="Describes the multicastAnnouncementInterval
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>multicastAnnouncementInterval</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>2*60*1000 (2 minutes)</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> A lookup service will send out multicast packets
+ announcing its existence every N milliseconds; for some
+ value of N. The value of this entry controls how often
+ this utility examines the multicast announcements from
+ previously discovered lookup services for <i>liveness</i>.
+ </table>
+
+ <a name="multicastInterfaceRetryInterval">
+ <table summary="Describes the multicastInterfaceRetryInterval
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>multicastInterfaceRetryInterval</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>int</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>5*60*1000 (5 minutes)</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> With respect to any network interface this utility is configured
+ to use to send and receive multicast packets (see entry
+ <a href="#multicastInterfaces">
+ <code>multicastInterfaces</code></a>), if failure is encountered
+ upon the initial attempt to set the interface or join the
+ desired multicast group, this utility will retry the failed
+ interface every <a href="#multicastInterfaceRetryInterval">
+ <code>multicastInterfaceRetryInterval</code></a> milliseconds
+ until success is encountered.
+ </table>
+
+ <a name="multicastInterfaces">
+ <table summary="Describes the multicastInterfaces
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>multicastInterfaces</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/NetworkInterface.html" title="class or interface in java.net"><CODE>NetworkInterface[]</CODE></A>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>new </code>
+ <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/NetworkInterface.html" title="class or interface in java.net"><CODE>NetworkInterface[]</CODE></A>
+   <code>{all currently supported interfaces}</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> Each network interface that is represented by an element
+ in the array corresponding to this configuration item
+ will be used to send and receive multicast packets when
+ this utility is participating in the multicast discovery
+ process. When not set, this utility will use all of the
+ network interfaces in the system. When this entry is set
+ to a zero length array, multicast discovery is effectively
+ <b><i>disabled</i></b>. And when set to <code>null</code>,
+ the interface to which the operating system defaults will be
+ used.
+ </table>
+
+ <a name="multicastRequestHost">
+ <table summary="Describes the multicastRequestHost
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>multicastRequestHost</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>String</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td>
+ <code><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/InetAddress.html" title="class or interface in java.net"><CODE>InetAddress</CODE></A>.getLocalHost().getHostAddress()</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> This entry specifies the host name to include in multicast
+ requests if participating in <b><i>version 2</i></b> of the
+ multicast request protocol. The name cannot be <code>null</code>.
+ </table>
+
+ <a name="multicastRequestInterval">
+ <table summary="Describes the multicastRequestInterval
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>multicastRequestInterval</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>5000</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> With respect to when this utility is started, as well as
+ when the set of groups to discover is changed, this entry
+ represents the number of milliseconds to wait after
+ sending the n-th multicast request, and before sending
+ the (n+1)-st request, where n is less than the value of the
+ <a href="#multicastRequestMax"><code>multicastRequestMax</code></a>
+ entry of this component.
+ </table>
+
+ <a name="multicastRequestMax">
+ <table summary="Describes the multicastRequestMax
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>multicastRequestMax</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>int</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>7</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> The maximum number multicast requests to send when this
+ utility is started for the first time, and whenever the
+ groups to discover is changed.
+ </table>
+
+ <a name="registrarPreparer">
+ <table summary="Describes the registrarPreparer configuration entry"
+ border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>registrarPreparer</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><CODE>ProxyPreparer</CODE></A>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>new <A HREF="../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A>()
+ </code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> Preparer for the proxies to the lookup services that are
+ discovered and used by this utility.
+ <p>
+ This preparer should perform all operations required to use a
+ newly received proxy to a lookup service, which may including
+ verifying trust in the proxy, granting permissions, and setting
+ constraints.
+ <p>
+ The following methods of the
+ <A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup"><CODE>ServiceRegistrar</CODE></A>
+ returned by this preparer are invoked by this implementation of
+ <code>LookupDiscovery</code>:
+ <ul>
+ <li><A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html#getServiceID()"><CODE>getServiceID</CODE></A>
+ <li><A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html#getGroups()"><CODE>getGroups</CODE></A>
+ <li><A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html#getLocator()"><CODE>getLocator</CODE></A>
+ </ul>
+ </table>
+
+ <a name="taskManager">
+ <table summary="Describes the taskManager configuration entry"
+ border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>taskManager</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../com/sun/jini/thread/TaskManager.html" title="class in com.sun.jini.thread"><CODE>TaskManager</CODE></A>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>new
+ <A HREF="../../../com/sun/jini/thread/TaskManager.html#TaskManager()"><CODE>TaskManager</CODE></A>(15, (15*1000), 1.0f)</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> The object that pools and manages the various threads
+ executed by this utility. The default manager creates a
+ maximum of 15 threads, waits 15 seconds before removing
+ idle threads, and uses a load factor of 1.0 when
+ determining whether to create a new thread. This object
+ should not be shared with other components in the
+ application that employs this utility.
+ </table>
+ <a name="unicastDelayRange">
+ <table summary="Describes the unicastDelayRange
+ configuration entry" border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>unicastDelayRange</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>0 milliseconds</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> Controls how long this utility will wait before sending out
+ unicast discovery requests. If the value is positive, any
+ unicast discovery request that it initiates will be delayed by a
+ random value between <code>0</code> and
+ <code>unicastDelayRange</code> milliseconds. A typical use of this
+ entry would be to achieve a more uniform distribution of unicast
+ discovery requests to a lookup service, when a large number of
+ <code>LookupDiscovery</code> instances simultaneously receive multicast
+ announcements from the lookup service.
+ </table>
+ <a name="wakeupManager">
+ <table summary="Describes the wakeupManager configuration entry"
+ border="0" cellpadding="2">
+ <tr valign="top">
+ <th scope="col" summary="layout"> <font size="+1">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1">
+ <code>wakeupManager</code></font>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../com/sun/jini/thread/WakeupManager.html" title="class in com.sun.jini.thread"><CODE>WakeupManager</CODE></A>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>new
+ <A HREF="../../../com/sun/jini/thread/WakeupManager.html#WakeupManager(com.sun.jini.thread.WakeupManager.ThreadDesc)"><CODE>WakeupManager</CODE></A>(new
+ <A HREF="../../../com/sun/jini/thread/WakeupManager.ThreadDesc.html" title="class in com.sun.jini.thread"><CODE>WakeupManager.ThreadDesc</CODE></A>(null,true))</code>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description:
+ <td> Object used to schedule unicast discovery requests that are
+ delayed using the
+ <a href="#unicastDelayRange"><code>unicastDelayRange</code></a>
+ configuration entry of this utility. This entry is processed only
+ if <code>unicastDelayRange</code> has a positive value.
+ </table>
+ <a name="ldLogging">
+ <p>
+ <b><font size="+1">Logging</font></b>
+ <p>
+ </a>
+
+ This implementation of <code>LookupDiscovery</code> uses the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Logger.html" title="class or interface in java.util.logging"><CODE>Logger</CODE></A>
+ named <code>net.jini.discovery.LookupDiscovery</code> to log information
+ at the following logging levels: <p>
+
+ <table border="1" cellpadding="5"
+ summary="Describes the information logged by LookupDiscovery, and
+ the levels at which that information is logged">
+
+ <caption halign="center" valign="top">
+ <b><code>net.jini.discovery.LookupDiscovery</code></b>
+ </caption>
+
+ <tr> <th scope="col"> Level</th>
+ <th scope="col"> Description</th>
+ </tr>
+
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#SEVERE" title="class or interface in java.util.logging"><CODE>SEVERE</CODE></A></td>
+ <td>
+ when this utility is configured to use either the default network
+ interface assigned by the system, or a specific list of network
+ interfaces, if one of those interfaces is bad or not configured for
+ multicast, or if a runtime exception occurs while either sending
+ multicast requests, or while configuring one of the interfaces to
+ receive multicast announcements, that fact will be logged at this
+ level
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#INFO" title="class or interface in java.util.logging"><CODE>INFO</CODE></A></td>
+ <td>
+ when any exception other than an <code>InterruptedIOException</code>,
+ <code>InterruptedException</code> or
+ <code>UnsupportedConstraintException</code> occurs in a thread or task
+ while attempting to marshal an outgoing multicast request
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#INFO" title="class or interface in java.util.logging"><CODE>INFO</CODE></A></td>
+ <td>
+ when any exception other than an <code>InterruptedIOException</code> or
+ <code>SocketTimeoutException</code> occurs in a non-interrupted thread
+ while attempting to receive an incoming multicast packet
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#INFO" title="class or interface in java.util.logging"><CODE>INFO</CODE></A></td>
+ <td>
+ when any exception other than an <code>InterruptedIOException</code>
+ occurs while attempting unicast discovery
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#INFO" title="class or interface in java.util.logging"><CODE>INFO</CODE></A></td>
+ <td>
+ when this utility is configured to use either the default network
+ interface assigned by the system, or a specific list of network
+ interfaces, with respect to any such interface, if failure is
+ encountered upon the initial attempt to set the interface or join
+ the desired multicast group, the interface will be periodically
+ retried, and successful recovery will be logged at this level
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#INFO" title="class or interface in java.util.logging"><CODE>INFO</CODE></A></td>
+ <td>when any exception occurs while attempting to prepare a proxy</td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#CONFIG" title="class or interface in java.util.logging"><CODE>CONFIG</CODE></A></td>
+ <td>
+ when the <code>multicastInterfaces</code> entry is configured to
+ be <code>null</code>, multicast packets will be sent and received
+ through the default network interface assigned by the system, and
+ that fact will be logged at this level
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#CONFIG" title="class or interface in java.util.logging"><CODE>CONFIG</CODE></A></td>
+ <td>
+ when the <code>multicastInterfaces</code> entry is configured to
+ be a zero length array, multicast discovery will be disabled, and
+ and that fact will be logged at this level
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#CONFIG" title="class or interface in java.util.logging"><CODE>CONFIG</CODE></A></td>
+ <td>
+ when the <code>multicastInterfaces</code> entry contains a specific
+ list of network interfaces, multicast packets will be sent and
+ received through only the network interfaces contained in that list,
+ and those interfaces will be logged at this level
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#CONFIG" title="class or interface in java.util.logging"><CODE>CONFIG</CODE></A></td>
+ <td>
+ when the <code>multicastInterfaces</code> entry is excluded from
+ the configuration, multicast packets will be sent and received
+ through all interfaces in the system, and those interfaces will
+ be logged at this level
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="../../../com/sun/jini/logging/Levels.html#FAILED"><CODE>FAILED</CODE></A></td>
+ <td>
+ when an <code>UnknownHostException</code> occurs while determining
+ the <code>multicastRequestHost</code>, but the caller does not have
+ permissions to retrieve the local host name. The original
+ <code>UnknownHostException</code> with the host name information
+ is logged
+ </td>
+ <tr>
+ <td><A HREF="../../../com/sun/jini/logging/Levels.html#HANDLED"><CODE>HANDLED</CODE></A></td>
+ <td>
+ when this utility is configured to use all network interfaces enabled
+ in the system, if one of those interfaces is bad or not configured for
+ multicast, or if a runtime exception occurs while either sending
+ multicast requests, or while configuring one of the interfaces to
+ receive multicast announcements, that fact will be logged at this
+ level
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="../../../com/sun/jini/logging/Levels.html#HANDLED"><CODE>HANDLED</CODE></A></td>
+ <td>
+ when any exception occurs while attempting to unmarshal an incoming
+ multicast announcement
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="../../../com/sun/jini/logging/Levels.html#HANDLED"><CODE>HANDLED</CODE></A></td>
+ <td>
+ when an <code>UnsupportedConstraintException</code> occurs while
+ marshalling an outgoing multicast request, indicating that the provider
+ that threw the exception will not be used for encoding that request
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="../../../com/sun/jini/logging/Levels.html#HANDLED"><CODE>HANDLED</CODE></A></td>
+ <td>
+ when an <code>IOException</code> occurs upon attempting to close the
+ socket after the thread that listens for multicast responses is asked
+ to terminate
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="../../../com/sun/jini/logging/Levels.html#HANDLED"><CODE>HANDLED</CODE></A></td>
+ <td>
+ when an exception is handled during unicast discovery
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINE" title="class or interface in java.util.logging"><CODE>FINE</CODE></A></td>
+ <td>
+ when this utility is configured to use all network interfaces enabled
+ in the system, with respect to any such interface, if failure is
+ encountered upon the initial attempt to set the interface or join
+ the desired multicast group, the interface will be periodically
+ retried, and successful recovery will be logged at this level
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINEST" title="class or interface in java.util.logging"><CODE>FINEST</CODE></A></td>
+ <td>whenever any thread or task is started</td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINEST" title="class or interface in java.util.logging"><CODE>FINEST</CODE></A></td>
+ <td>
+ whenever any thread (except the <code>Notifier</code> thread) or task
+ completes successfully
+ </td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINEST" title="class or interface in java.util.logging"><CODE>FINEST</CODE></A></td>
+ <td>whenever a discovered, discarded, or changed event is sent</td>
+ </tr>
+ <tr>
+ <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINEST" title="class or interface in java.util.logging"><CODE>FINEST</CODE></A></td>
+ <td>whenever a proxy is prepared</td>
+ </tr>
+ </table>
+ <p></DD>
+</DL>
+<HR>
+
+<P>
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#ALL_GROUPS">ALL_GROUPS</A></B></CODE>
+
+<BR>
+ Convenience constant used to request that attempts be made to
+ discover all lookup services that are within range, and which
+ belong to any group.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#NO_GROUPS">NO_GROUPS</A></B></CODE>
+
+<BR>
+ Convenience constant used to request that discovery by group
+ membership be halted (or not started, if the group discovery
+ mechanism is simply being instantiated).</TD>
+</TR>
+</TABLE>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#LookupDiscovery(java.lang.String[])">LookupDiscovery</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] groups)</CODE>
+
+<BR>
+ Construct a new lookup discovery object, set to discover the
+ given set of groups.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#LookupDiscovery(java.lang.String[], net.jini.config.Configuration)">LookupDiscovery</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] groups,
+ <A HREF="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</A> config)</CODE>
+
+<BR>
+ Constructs a new lookup discovery object, set to discover the
+ given set of groups, and having the given <code>Configuration</code>.</TD>
+</TR>
+</TABLE>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#addDiscoveryListener(net.jini.discovery.DiscoveryListener)">addDiscoveryListener</A></B>(<A HREF="../../../net/jini/discovery/DiscoveryListener.html" title="interface in net.jini.discovery">DiscoveryListener</A> l)</CODE>
+
+<BR>
+ Register a listener as interested in receiving DiscoveryEvent
+ notifications.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#addGroups(java.lang.String[])">addGroups</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] newGroups)</CODE>
+
+<BR>
+ Add a set of groups to the set to be discovered.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#discard(net.jini.core.lookup.ServiceRegistrar)">discard</A></B>(<A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup">ServiceRegistrar</A> reg)</CODE>
+
+<BR>
+ Discard a registrar from the set of registrars already
+ discovered.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#getGroups()">getGroups</A></B>()</CODE>
+
+<BR>
+ Return the set of group names this LookupDiscovery instance is
+ trying to discover.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> <A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup">ServiceRegistrar</A>[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#getRegistrars()">getRegistrars</A></B>()</CODE>
+
+<BR>
+ Returns an array of instances of <code>ServiceRegistrar</code>, each
+ corresponding to a proxy to one of the currently discovered lookup
+ services.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#removeDiscoveryListener(net.jini.discovery.DiscoveryListener)">removeDiscoveryListener</A></B>(<A HREF="../../../net/jini/discovery/DiscoveryListener.html" title="interface in net.jini.discovery">DiscoveryListener</A> l)</CODE>
+
+<BR>
+ Indicate that a listener is no longer interested in receiving
+ DiscoveryEvent notifications.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#removeGroups(java.lang.String[])">removeGroups</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] oldGroups)</CODE>
+
+<BR>
+ Remove a set of groups from the set to be discovered.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#setGroups(java.lang.String[])">setGroups</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] newGroups)</CODE>
+
+<BR>
+ Change the set of groups to be discovered to correspond to the
+ given set.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#terminate()">terminate</A></B>()</CODE>
+
+<BR>
+ Terminate the discovery process.</TD>
+</TR>
+</TABLE>
+ <A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://
java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="ALL_GROUPS"><!-- --></A><H3>
+ALL_GROUPS</H3>
+<PRE>
+public static final <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] <B>ALL_GROUPS</B></PRE>
+<DL>
+<DD>Convenience constant used to request that attempts be made to
+ discover all lookup services that are within range, and which
+ belong to any group. Must define this constant here as well as in
+ <code>DiscoveryGroupManagement</code> for compatibility with
+ earlier releases.
+<P>
+<DL>
+</DL>
+</DL>
+<HR>
+
+<A NAME="NO_GROUPS"><!-- --></A><H3>
+NO_GROUPS</H3>
+<PRE>
+public static final <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] <B>NO_GROUPS</B></PRE>
+<DL>
+<DD>Convenience constant used to request that discovery by group
+ membership be halted (or not started, if the group discovery
+ mechanism is simply being instantiated). Must define this constant
+ here as well as in <code>DiscoveryGroupManagement</code> for
+ compatibility with earlier releases.
+<P>
+<DL>
+</DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="LookupDiscovery(java.lang.String[])"><!-- --></A><H3>
+LookupDiscovery</H3>
+<PRE>
+public <B>LookupDiscovery</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] groups)
+ throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+<DL>
+<DD>Construct a new lookup discovery object, set to discover the
+ given set of groups. The set is represented as an array of
+ strings. This array may be empty, which is taken as the empty
+ set, and discovery is not performed. The reference passed in
+ may be null, which is taken as no set, and in which case
+ discovery of all reachable lookup services is performed.
+ Otherwise, the array contains the names of groups to discover.
+ The caller must have DiscoveryPermission for each group (or
+ for all groups, if the array is null).
+<P>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>groups</CODE> - the set of group names to discover (null for no
+ set, empty for no discovery)
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - input array contains at least
+ one null element
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE> - an exception occurred in starting discovery<DT><B>See Also:</B><DD><A HREF="../../../net/jini/discovery/LookupDiscovery.html#NO_GROUPS"><CODE>NO_GROUPS</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#ALL_GROUPS"><CODE>ALL_GROUPS</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#setGroups(java.lang.String[])"><CODE>setGroups(java.lang.String[])</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryPermission.html" title="class in net.jini.discovery"><CODE>DiscoveryPermission</CODE></A></DL>
+</DL>
+<HR>
+
+<A NAME="LookupDiscovery(java.lang.String[], net.jini.config.Configuration)"><!-- --></A><H3>
+LookupDiscovery</H3>
+<PRE>
+public <B>LookupDiscovery</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] groups,
+ <A HREF="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</A> config)
+ throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A>,
+ <A HREF="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config">ConfigurationException</A></PRE>
+<DL>
+<DD>Constructs a new lookup discovery object, set to discover the
+ given set of groups, and having the given <code>Configuration</code>.
+ <p>
+ The set of groups to discover is represented as an array of
+ strings. This array may be empty, which is taken as the empty
+ set, and discovery is not performed. The reference passed in
+ may be <code>null</code>, which is taken as no set, and in which
+ case discovery of all reachable lookup services is performed.
+ Otherwise, the array contains the names of groups to discover.
+ The caller must have <code>DiscoveryPermission</code> for each
+ group (or for all groups, if the array is <code>null</code>).
+<P>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>groups</CODE> - the set of group names to discover (null for no
+ set, empty for no discovery)<DD><CODE>config</CODE> - an instance of <code>Configuration</code>, used to
+ obtain the objects needed to configure the current
+ instance of this class
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - input array contains at least
+ one <code>null</code> element or <code>null</code> is input
+ for the configuration
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE> - an exception occurred in starting discovery
+<DD><CODE><A HREF="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config">ConfigurationException</A></CODE> - indicates an exception
+ occurred while retrieving an item from the given
+ <code>Configuration</code><DT><B>See Also:</B><DD><A HREF="../../../net/jini/discovery/LookupDiscovery.html#NO_GROUPS"><CODE>NO_GROUPS</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#ALL_GROUPS"><CODE>ALL_GROUPS</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#setGroups(java.lang.String[])"><CODE>setGroups(java.lang.String[])</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryPermission.html" title="class in net.jini.discovery"><CODE>DiscoveryPermission</CODE></A>,
+<A HREF="../../../net/jini/config/Configuration.html" title="interface in net.jini.config"><CODE>Configuration</CODE></A>,
+<A HREF="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config"><CODE>ConfigurationException</CODE></A></DL>
+</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="addDiscoveryListener(net.jini.discovery.DiscoveryListener)"><!-- --></A><H3>
+addDiscoveryListener</H3>
+<PRE>
+public void <B>addDiscoveryListener</B>(<A HREF="../../../net/jini/discovery/DiscoveryListener.html" title="interface in net.jini.discovery">DiscoveryListener</A> l)</PRE>
+<DL>
+<DD>Register a listener as interested in receiving DiscoveryEvent
+ notifications.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html#addDiscoveryListener(net.jini.discovery.DiscoveryListener)">addDiscoveryListener</A></CODE> in interface <CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - the listener to register
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - this exception occurs when
+ <code>null</code> is input to the listener parameter
+ <code>l</code>.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - this exception occurs when
+ this method is called after the <code>terminate</code>
+ method has been called.<DT><B>See Also:</B><DD><A HREF="../../../net/jini/discovery/DiscoveryEvent.html" title="class in net.jini.discovery"><CODE>DiscoveryEvent</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#removeDiscoveryListener(net.jini.discovery.DiscoveryListener)"><CODE>removeDiscoveryListener(net.jini.discovery.DiscoveryListener)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="removeDiscoveryListener(net.jini.discovery.DiscoveryListener)"><!-- --></A><H3>
+removeDiscoveryListener</H3>
+<PRE>
+public void <B>removeDiscoveryListener</B>(<A HREF="../../../net/jini/discovery/DiscoveryListener.html" title="interface in net.jini.discovery">DiscoveryListener</A> l)</PRE>
+<DL>
+<DD>Indicate that a listener is no longer interested in receiving
+ DiscoveryEvent notifications.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html#removeDiscoveryListener(net.jini.discovery.DiscoveryListener)">removeDiscoveryListener</A></CODE> in interface <CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>l</CODE> - the listener to unregister
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - this exception occurs when
+ this method is called after the <code>terminate</code>
+ method has been called.<DT><B>See Also:</B><DD><A HREF="../../../net/jini/discovery/LookupDiscovery.html#addDiscoveryListener(net.jini.discovery.DiscoveryListener)"><CODE>addDiscoveryListener(net.jini.discovery.DiscoveryListener)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getRegistrars()"><!-- --></A><H3>
+getRegistrars</H3>
+<PRE>
+public <A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup">ServiceRegistrar</A>[] <B>getRegistrars</B>()</PRE>
+<DL>
+<DD>Returns an array of instances of <code>ServiceRegistrar</code>, each
+ corresponding to a proxy to one of the currently discovered lookup
+ services. For each invocation of this method, a new array is returned.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html#getRegistrars()">getRegistrars</A></CODE> in interface <CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>array of instances of <code>ServiceRegistrar</code>, each
+ corresponding to a proxy to one of the currently discovered
+ lookup services
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - this exception occurs when
+ this method is called after the <code>terminate</code>
+ method has been called.<DT><B>See Also:</B><DD><A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup"><CODE>ServiceRegistrar</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryManagement.html#removeDiscoveryListener(net.jini.discovery.DiscoveryListener)"><CODE>DiscoveryManagement.removeDiscoveryListener(net.jini.discovery.DiscoveryListener)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="discard(net.jini.core.lookup.ServiceRegistrar)"><!-- --></A><H3>
+discard</H3>
+<PRE>
+public void <B>discard</B>(<A HREF="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup">ServiceRegistrar</A> reg)</PRE>
+<DL>
+<DD>Discard a registrar from the set of registrars already
+ discovered. This does not prevent that registrar from being
+ rediscovered; it is intended to be used to clear unreachable
+ entries from the set. <p>
+
+ If the registrar has been discovered using this LookupDiscovery
+ object, each listener registered with this object will have its
+ discarded method called with the given registrar as parameter.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html#discard(net.jini.core.lookup.ServiceRegistrar)">discard</A></CODE> in interface <CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>reg</CODE> - the registrar to discard
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - this exception occurs when
+ this method is called after the <code>terminate</code>
+ method has been called.<DT><B>See Also:</B><DD><A HREF="../../../net/jini/discovery/DiscoveryListener.html#discarded(net.jini.discovery.DiscoveryEvent)"><CODE>DiscoveryListener.discarded(net.jini.discovery.DiscoveryEvent)</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="terminate()"><!-- --></A><H3>
+terminate</H3>
+<PRE>
+public void <B>terminate</B>()</PRE>
+<DL>
+<DD>Terminate the discovery process.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html#terminate()">terminate</A></CODE> in interface <CODE><A HREF="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</A></CODE></DL>
+</DD>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getGroups()"><!-- --></A><H3>
+getGroups</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] <B>getGroups</B>()</PRE>
+<DL>
+<DD>Return the set of group names this LookupDiscovery instance is
+ trying to discover. If this method returns the empty array,
+ that value is guaranteed to be referentially equal to
+ LookupDiscovery.NO_GROUPS.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html#getGroups()">getGroups</A></CODE> in interface <CODE><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html" title="interface in net.jini.discovery">DiscoveryGroupManagement</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the set of groups to be discovered (null for all, empty
+ for no discovery)
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - this exception occurs when
+ this method is called after the <code>terminate</code>
+ method has been called.<DT><B>See Also:</B><DD><A HREF="../../../net/jini/discovery/LookupDiscovery.html#NO_GROUPS"><CODE>NO_GROUPS</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#ALL_GROUPS"><CODE>ALL_GROUPS</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#setGroups(java.lang.String[])"><CODE>setGroups(java.lang.String[])</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addGroups(java.lang.String[])"><!-- --></A><H3>
+addGroups</H3>
+<PRE>
+public void <B>addGroups</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] newGroups)
+ throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+<DL>
+<DD>Add a set of groups to the set to be discovered.
+ The caller must have DiscoveryPermission for each group.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html#addGroups(java.lang.String[])">addGroups</A></CODE> in interface <CODE><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html" title="interface in net.jini.discovery">DiscoveryGroupManagement</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>newGroups</CODE> - the groups to add
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE> - the multicast request protocol failed
+ to start
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - this exception occurs when
+ this method is called after the <code>terminate</code>
+ method has been called.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - there is no set of
+ groups to add to<DT><B>See Also:</B><DD><A HREF="../../../net/jini/discovery/DiscoveryPermission.html" title="class in net.jini.discovery"><CODE>DiscoveryPermission</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setGroups(java.lang.String[])"><!-- --></A><H3>
+setGroups</H3>
+<PRE>
+public void <B>setGroups</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] newGroups)
+ throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+<DL>
+<DD>Change the set of groups to be discovered to correspond to the
+ given set. The set is represented as an array of strings.
+ This array may be empty, which is taken as the empty set, and
+ discovery is not performed. The reference passed in may be
+ null, which is taken as no set, and in which case discovery of
+ all reachable lookup services is performed. Otherwise, the
+ array contains the names of groups to discover.
+ The caller must have DiscoveryPermission for each group (or
+ for all groups, if the array is null).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html#setGroups(java.lang.String[])">setGroups</A></CODE> in interface <CODE><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html" title="interface in net.jini.discovery">DiscoveryGroupManagement</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>newGroups</CODE> - the new set of groups to discover (null for
+ all, empty array for no discovery)
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE> - an exception occurred when starting
+ multicast discovery
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - this exception occurs when
+ this method is called after the <code>terminate</code>
+ method has been called.<DT><B>See Also:</B><DD><A HREF="../../../net/jini/discovery/LookupDiscovery.html#LookupDiscovery(java.lang.String[], net.jini.config.Configuration)"><CODE>LookupDiscovery(java.lang.String[], net.jini.config.Configuration)</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#ALL_GROUPS"><CODE>ALL_GROUPS</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#NO_GROUPS"><CODE>NO_GROUPS</CODE></A>,
+<A HREF="../../../net/jini/discovery/DiscoveryPermission.html" title="class in net.jini.discovery"><CODE>DiscoveryPermission</CODE></A>,
+<A HREF="../../../net/jini/discovery/LookupDiscovery.html#getGroups()"><CODE>getGroups()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="removeGroups(java.lang.String[])"><!-- --></A><H3>
+removeGroups</H3>
+<PRE>
+public void <B>removeGroups</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] oldGroups)</PRE>
+<DL>
+<DD>Remove a set of groups from the set to be discovered.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html#removeGroups(java.lang.String[])">removeGroups</A></CODE> in interface <CODE><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html" title="interface in net.jini.discovery">DiscoveryGroupManagement</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>oldGroups</CODE> - groups to remove
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalStateException.html" title="class or interface in java.lang">IllegalStateException</A></CODE> - this exception occurs when
+ this method is called after the <code>terminate</code>
+ method has been called.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang">UnsupportedOperationException</A></CODE> - there is no set of
+ groups from which to remove<DT><B>See Also:</B><DD><A HREF="../../../net/jini/discovery/DiscoveryGroupManagement.html#addGroups(java.lang.String[])"><CODE>DiscoveryGroupManagement.addGroups(java.lang.String[])</CODE></A></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+ <TR ALIGN="center" VALIGN="top">
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/LookupDiscovery.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../net/jini/discovery/IncomingUnicastResponse.html" title="class in net.jini.discovery"><B>PREV CLASS</B></A>
+ <A HREF="../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../index.html?net/jini/discovery/LookupDiscovery.html" target="_top"><B>FRAMES</B></A>
+ <A HREF="LookupDiscovery.html" target="_top"><B>NO FRAMES</B></A>
+ <SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+ SUMMARY: NESTED | <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+Copyright 2007, multiple authors.<br>Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0" target="child" >Apache License, Version 2.0</a>, see the <a href="../../../doc-files/NOTICE" target="child" >NOTICE</a> file for attributions.
+</BODY>
+</HTML>