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>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/LookupDiscovery.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../net/jini/discovery/IncomingUnicastResponse.html" title="class in net.jini.discovery"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<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>  &nbsp;
+&nbsp;<A HREF="LookupDiscovery.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<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:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>discoveryConstraints</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <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> &nbsp <th scope="row" align="right">
+     Default: <td> <code>null</code>
+ 
+   <tr valign="top"> <td> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>finalMulticastRequestInterval</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Type: <td> <code>long</code>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Default: <td> <code>2*60*1000 (2 minutes)</code>
+ 
+   <tr valign="top"> <td> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>initialMulticastRequestDelayRange</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Type: <td> <code>long</code>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Default: <td> <code>0 milliseconds</code>
+ 
+   <tr valign="top"> <td> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>multicastAnnouncementInterval</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Type: <td> <code>long</code>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Default: <td> <code>2*60*1000 (2 minutes)</code>
+ 
+   <tr valign="top"> <td> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>multicastInterfaceRetryInterval</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Type: <td> <code>int</code>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Default: <td> <code>5*60*1000 (5 minutes)</code>
+ 
+   <tr valign="top"> <td> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>multicastInterfaces</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <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> &nbsp <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>
+                     &nbsp <code>{all currently supported interfaces}</code>
+ 
+   <tr valign="top"> <td> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>multicastRequestHost</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Type: <td> <code>String</code>
+ 
+   <tr valign="top"> <td> &nbsp <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> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>multicastRequestInterval</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Type: <td> <code>long</code>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Default: <td> <code>5000</code>
+ 
+   <tr valign="top"> <td> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>multicastRequestMax</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Type: <td> <code>int</code>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Default: <td> <code>7</code>
+ 
+   <tr valign="top"> <td> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>registrarPreparer</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <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> &nbsp <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> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>taskManager</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <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> &nbsp <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> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>unicastDelayRange</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Type: <td> <code>long</code>
+ 
+   <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+     Default: <td> <code>0 milliseconds</code>
+ 
+   <tr valign="top"> <td> &nbsp <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">&#X2022;</font>
+     <th scope="col" align="left" colspan="2"> <font size="+1">
+     <code>wakeupManager</code></font>
+ 
+   <tr valign="top"> <td> &nbsp <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> &nbsp <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> &nbsp <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&nbsp;<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>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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&nbsp;<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>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>
+&nbsp;
+<!-- ======== 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>[]&nbsp;groups)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>[]&nbsp;groups,
+                <A HREF="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</A>&nbsp;config)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a new lookup discovery object, set to discover the
+ given set of groups, and having the given <code>Configuration</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== 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>&nbsp;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>&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;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>[]&nbsp;newGroups)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;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>&nbsp;reg)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;<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>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;<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>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;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>&nbsp;l)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;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>[]&nbsp;oldGroups)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;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>[]&nbsp;newGroups)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/discovery/LookupDiscovery.html#terminate()">terminate</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Terminate the discovery process.</TD>
+</TR>
+</TABLE>
+&nbsp;<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>
+&nbsp;
+<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>[]&nbsp;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>[]&nbsp;groups,
+                       <A HREF="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</A>&nbsp;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>&nbsp;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>&nbsp;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>&nbsp;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>[]&nbsp;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>[]&nbsp;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>[]&nbsp;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>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/LookupDiscovery.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../net/jini/discovery/IncomingUnicastResponse.html" title="class in net.jini.discovery"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<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>  &nbsp;
+&nbsp;<A HREF="LookupDiscovery.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<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:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<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>