You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by si...@apache.org on 2010/12/24 22:38:43 UTC

svn commit: r1052685 [2/3] - in /incubator/river/site/trunk/content/river/doc/api/com/sun/jini/reggie: RegistrarPermission.html UuidGenerator.html class-use/ package-frame.html package-summary.html package-tree.html package-use.html

Added: incubator/river/site/trunk/content/river/doc/api/com/sun/jini/reggie/package-summary.html
URL: http://svn.apache.org/viewvc/incubator/river/site/trunk/content/river/doc/api/com/sun/jini/reggie/package-summary.html?rev=1052685&view=auto
==============================================================================
--- incubator/river/site/trunk/content/river/doc/api/com/sun/jini/reggie/package-summary.html (added)
+++ incubator/river/site/trunk/content/river/doc/api/com/sun/jini/reggie/package-summary.html Fri Dec 24 21:38:43 2010
@@ -0,0 +1,1848 @@
+<!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:28 EST 2010 -->
+<TITLE>
+com.sun.jini.reggie (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sun.jini.reggie package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.sun.jini.reggie (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="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-use.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="../../../../com/sun/jini/proxy/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../com/sun/jini/reliableLog/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?com/sun/jini/reggie/package-summary.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.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>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.sun.jini.reggie
+</H2>
+Provides implementations of <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup"><CODE>ServiceRegistrar</CODE></A>.
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/reggie/RegistrarPermission.html" title="class in com.sun.jini.reggie">RegistrarPermission</A></B></TD>
+<TD>Permission that can be used to express the access control policy for an
+ instance of the Reggie lookup service exported with a <A HREF="../../../../net/jini/jeri/BasicJeriExporter.html" title="class in net.jini.jeri"><CODE>BasicJeriExporter</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/reggie/UuidGenerator.html" title="class in com.sun.jini.reggie">UuidGenerator</A></B></TD>
+<TD>Class for generating <A HREF="../../../../net/jini/id/Uuid.html" title="class in net.jini.id"><CODE>Uuid</CODE></A> instances.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.sun.jini.reggie Description
+</H2>
+
+<P>
+Provides implementations of <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup"><CODE>ServiceRegistrar</CODE></A>.
+Two implementations are available for use with the <A HREF="../../../../com/sun/jini/start/package-summary.html"><CODE>com.sun.jini.start</CODE></A>
+package:
+
+<ul>
+
+<li> <code>com.sun.jini.reggie.PersistentRegistrarImpl</code> - a persistent
+     implementation which can be run either as activatable or non-activatable,
+     suitable for use with
+     <A HREF="../../../../com/sun/jini/start/SharedActivatableServiceDescriptor.html" title="class in com.sun.jini.start"><CODE>SharedActivatableServiceDescriptor</CODE></A> or
+     <A HREF="../../../../com/sun/jini/start/NonActivatableServiceDescriptor.html" title="class in com.sun.jini.start"><CODE>NonActivatableServiceDescriptor</CODE></A>
+
+<li> <code>com.sun.jini.reggie.TransientRegistrarImpl</code> - a
+     non-activatable transient implementation, suitable for use with
+     <A HREF="../../../../com/sun/jini/start/NonActivatableServiceDescriptor.html" title="class in com.sun.jini.start"><CODE>NonActivatableServiceDescriptor</CODE></A>
+
+</ul> <p>
+
+The name "Reggie" loosely refers to either implementation.  The JAR file
+<code>reggie.jar</code>, included in the <code>lib</code> subdirectory of the
+Apache River release installation, contains the
+classes for both Reggie service implementations. The <code>reggie-dl.jar</code>
+and <code>jsk-dl.jar</code> files in the <code>lib-dl</code> subdirectory 
+contain the classes needed in the codebase for its downloaded proxies. 
+None of the JAR files include classes from <code>jsk-platform.jar</code>, 
+which are included by the service starter's <code>start.jar</code> JAR file, 
+and need to be included in the codebase of clients. <p>
+
+The main proxy of an instance of either of the implementations above implements
+the <code>ServiceRegistrar</code>, <A HREF="../../../../net/jini/admin/Administrable.html" title="interface in net.jini.admin"><CODE>Administrable</CODE></A> and
+<A HREF="../../../../net/jini/id/ReferentUuid.html" title="interface in net.jini.id"><CODE>ReferentUuid</CODE></A> interfaces.  The admin proxy, obtainable by
+calling the <A HREF="../../../../net/jini/admin/Administrable.html#getAdmin()"><CODE>getAdmin</CODE></A> method of
+the main proxy, implements the <A HREF="../../../../net/jini/lookup/DiscoveryAdmin.html" title="interface in net.jini.lookup"><CODE>DiscoveryAdmin</CODE></A>, <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A>, <A HREF="../../../../com/sun/jini/admin/DestroyAdmin.html" title="interface in com.sun.jini.admin"><CODE>DestroyAdmin</CODE></A> and
+<code>ReferentUuid</code> interfaces. <p>
+
+This document provides the following information about Reggie:
+<ul>
+<li> <a href="#configuration">Configuring Reggie</a>
+<li> <a href="#access_control">Access Control Permission Targets</a>
+<li> <a href="#logging">Loggers and Logging Levels</a>
+<li> <a href="#system_properties">System Properties</a>
+<li> <a href="#examples">Examples for Running Reggie</a>
+</ul> <p>
+
+<a name="configuration">
+<h2>Configuring Reggie</h2>
+</a>
+
+Both <code>TransientRegistrarImpl</code> and
+<code>PersistentRegistrarImpl</code> service implementations obtain their
+configurations by calling
+<A HREF="../../../../net/jini/config/ConfigurationProvider.html#getInstance(java.lang.String[], java.lang.ClassLoader)"><CODE>ConfigurationProvider.getInstance</CODE></A> with the specified <i>configOptions</i> and
+the class loader for the implementation class. <p>
+
+The configuration entries supported by the two implementations are listed
+below.  <code>PersistentRegistrarImpl</code> supports all of the listed
+entries.  <code>TransientRegistrarImpl</code> supports all listed entries
+except for the following persistence/activation-specific entries:
+<ul>
+<li> <a href="#activationIdPreparer">
+     <code>activationIdPreparer</code></a>
+<li> <a href="#activationSystemPreparer">
+     <code>activationSystemPreparer</code></a>
+<li> <a href="#persistenceDirectory">
+     <code>persistenceDirectory</code></a>
+<li> <a href="#persistenceSnapshotThreshold">
+     <code>persistenceSnapshotThreshold</code></a>
+<li> <a href="#persistenceSnapshotWeight">
+     <code>persistenceSnapshotWeight</code></a>
+<li> <a href="#recoveredListenerPreparer">
+     <code>recoveredListenerPreparer</code></a>
+<li> <a href="#recoveredLocatorPreparer">
+     <code>recoveredLocatorPreparer</code></a>
+</ul> <p>
+
+All configuration entries listed below have <code>com.sun.jini.reggie</code> as
+their component. <p>
+
+<a name="activationIdPreparer"></a>
+<table summary="Describes the activationIdPreparer 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>
+    activationIdPreparer</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> Specifies the proxy preparer to use for the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/activation/ActivationID.html" title="class or interface in java.rmi.activation"><CODE>ActivationID</CODE></A> for this service, if this service is run
+    as activatable.  This service does not invoke any methods on the prepared
+    <code>ActivationID</code> directly; however, it passes it to clients which
+    may call its <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/activation/ActivationID.html#activate(boolean)" title="class or interface in java.rmi.activation"><CODE>activate</CODE></A>
+    method if they need to reactivate this service.  This entry is obtained at
+    service start and restart if the service is running as activatable, and is
+    only supported by <code>PersistentRegistrarImpl</code>.
+</table>
+
+<a name="activationSystemPreparer"></a>
+<table summary="Describes the activationSystemPreparer 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>
+    activationSystemPreparer</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> Specifies the proxy preparer to use for the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/activation/ActivationSystem.html" title="class or interface in java.rmi.activation"><CODE>ActivationSystem</CODE></A> proxy.  During shutdown, this service
+    calls the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/activation/ActivationSystem.html#unregisterObject(java.rmi.activation.ActivationID)" title="class or interface in java.rmi.activation"><CODE>unregisterObject</CODE></A> method on the <code>ActivationSystem</code> instance
+    returned from this preparer.  This entry is obtained at service start and
+    restart if the service is running as activatable, and is only supported by
+    <code>PersistentRegistrarImpl</code>.
+</table>
+
+<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> Specifies 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>DiscoveryConstraints.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>DiscoveryConstraints.multicastAnnouncement()</CODE></A> and
+    <A HREF="../../../../com/sun/jini/discovery/DiscoveryConstraints.html#unicastDiscovery()"><CODE>DiscoveryConstraints.unicastDiscovery()</CODE></A>
+    methods, respectively.  A <code>null</code> value is interpreted as mapping
+    all methods to empty constraints.
+    <p>
+    Reggie supports 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.  Reggie defaults to using version one of the discovery 
+           protocols if this constraint is not specified and no other 
+           constraints, besides the ones listed here, are specified.
+      <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
+           announcement packets to send; it can also be used to specify the
+           size of the buffer used to receive incoming multicast request
+           packets.  Reggie defaults to <code>512</code> bytes as the maximum 
+           size for announcements sent if this constraint is not specified for
+           the <A HREF="../../../../com/sun/jini/discovery/DiscoveryConstraints.html#multicastAnnouncement()"><CODE>DiscoveryConstraints.multicastAnnouncement()</CODE></A> 
+           method.  Reggie defaults to <code>512</code> bytes as the size of 
+           the buffer used to receive incoming multicast request packets if 
+           this constraint is not specified for the <A HREF="../../../../com/sun/jini/discovery/DiscoveryConstraints.html#multicastRequest()"><CODE>DiscoveryConstraints.multicastRequest()</CODE></A> 
+           method.
+      <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.  Reggie defaults to sending multicast 
+           announcements with a TTL of <code>15</code> if this constraint is 
+           not specified for the <A HREF="../../../../com/sun/jini/discovery/DiscoveryConstraints.html#multicastAnnouncement()"><CODE>DiscoveryConstraints.multicastAnnouncement()</CODE></A>
+           method.
+      <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.  In other words, it controls the
+           amount of time Reggie waits to read data from a connected client 
+           attempting to discover Reggie.  Reggie defaults to one minute as 
+           the read timeout on sockets over which unicast discovery is 
+           performed if this constraint is not specified for the <A HREF="../../../../com/sun/jini/discovery/DiscoveryConstraints.html#unicastDiscovery()"><CODE>DiscoveryConstraints.unicastDiscovery()</CODE></A>
+           method. 
+      <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 connection timeout set on 
+           sockets over which unicast discovery is performed.  In other words,
+           it controls the amount of time Reggie waits to connect to a client
+           attempting to discover Reggie.  If this constraint is not specified 
+           for the <A HREF="../../../../com/sun/jini/discovery/DiscoveryConstraints.html#unicastDiscovery()"><CODE>DiscoveryConstraints.unicastDiscovery()</CODE></A>
+           method, the connection attempt will block until the connection
+           is established or an error occurs.
+      <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 set a time after which reggie will
+           cease to respond to discovery requests.  By default, Reggie has no 
+           limitation on how long to continue responding to discovery requests.
+    </ul>
+    Constraints other than those listed above are passed on to the underlying
+    implementations of versions 1 and 2 of the discovery protocols.  This entry
+    is obtained at service start and restart.
+</table>
+
+<a name="discoveryManager"></a>
+<table summary="Describes the discoveryManager 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>
+    discoveryManager</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Type: <td> <A HREF="../../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><CODE>DiscoveryManagement</CODE></A>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td>
+<pre>
+new <A HREF="../../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><CODE>LookupDiscoveryManager</CODE></A>(
+    <A HREF="../../../../net/jini/discovery/DiscoveryGroupManagement.html#NO_GROUPS"><CODE>DiscoveryGroupManagement.NO_GROUPS</CODE></A>,
+    null, // locators
+    null, // listener
+    this) // config
+</pre>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies <code>DiscoveryManagement</code> instance to
+    use to discover other lookup services with which this service should
+    register.  The object returned must also implement <A HREF="../../../../net/jini/discovery/DiscoveryGroupManagement.html" title="interface in net.jini.discovery"><CODE>DiscoveryGroupManagement</CODE></A> and <A HREF="../../../../net/jini/discovery/DiscoveryLocatorManagement.html" title="interface in net.jini.discovery"><CODE>DiscoveryLocatorManagement</CODE></A>, and should be configured
+    initially to discover no groups or specific lookup services.  This entry is
+    obtained at service start and restart.
+</table>
+
+<table summary="Describes the initialLookupAttributes 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>
+    initialLookupAttributes</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Type: <td> <code><A HREF="../../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry"><CODE>Entry</CODE></A>[]</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td> <code>new Entry[0]</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies initial attributes to use when registering with
+    lookup services (including self).  The <code>null</code> value is
+    equivalent to an empty <code>Entry</code> array.  This service
+    implementation provides two additional hardcoded attributes--a <A HREF="../../../../net/jini/lookup/entry/ServiceInfo.html" title="class in net.jini.lookup.entry"><CODE>ServiceInfo</CODE></A> instance with <code>name</code> field
+    set to the string <code>"Lookup"</code>, and a <A HREF="../../../../com/sun/jini/lookup/entry/BasicServiceType.html" title="class in com.sun.jini.lookup.entry"><CODE>BasicServiceType</CODE></A> instance with <code>type</code>
+    field also set to <code>"Lookup"</code>--which are combined with the
+    entry-specified attributes to obtain the total set of initial attributes
+    with which to register.  This entry is obtained once at service start; the
+    current set of attributes (modifiable via the <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A> methods of Reggie's admin object) is persisted
+    across restarts.
+</table>
+
+<table summary="Describes the initialLookupGroups 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>
+    initialLookupGroups</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> <A HREF="../../../../net/jini/discovery/DiscoveryGroupManagement.html#NO_GROUPS"><CODE>DiscoveryGroupManagement.NO_GROUPS</CODE></A>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies initial groups for determining the set of
+    lookup services with which to register.  This entry is obtained once at
+    service start; the current set of lookup groups (modifiable via the <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A> methods of Reggie's admin object) is persisted
+    across restarts.
+</table>
+
+<table summary="Describes the initialLookupLocators 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>
+    initialLookupLocators</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Type: <td> <code><A HREF="../../../../net/jini/core/discovery/LookupLocator.html" title="class in net.jini.core.discovery"><CODE>LookupLocator</CODE></A>[]</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td> <code>new LookupLocator[0]</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies initial list of locators indicating other
+    lookup services with which to register.  This entry is obtained once at
+    service start; the current set of lookup locators (modifiable via the
+    <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A> methods of Reggie's admin object) is
+    persisted across restarts.
+</table>
+
+<table summary="Describes the initialMemberGroups 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>
+    initialMemberGroups</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>new String[]{ "" }</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies initial groups for this lookup service to be a
+    member of.  The value should not be <code>null</code> (which is equal to
+    <A HREF="../../../../net/jini/discovery/DiscoveryGroupManagement.html#ALL_GROUPS"><CODE>DiscoveryGroupManagement.ALL_GROUPS</CODE></A>).  This
+    entry is obtained once at service start; the current set of member groups
+    (modifiable via the <A HREF="../../../../net/jini/lookup/DiscoveryAdmin.html" title="interface in net.jini.lookup"><CODE>DiscoveryAdmin</CODE></A> methods of
+    Reggie's admin object) is persisted across restarts.
+</table>
+
+<table summary="Describes the initialUnicastDiscoveryPort 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>
+    initialUnicastDiscoveryPort</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>0</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the initial number of the port on which to
+    listen for unicast discovery queries.  If the port number is
+    <code>0</code>, then an arbitrary port is selected (with preference given
+    to <A HREF="../../../../net/jini/discovery/Constants.html#discoveryPort"><CODE>Constants.discoveryPort</CODE></A>, if available).  This
+    entry is obtained once at service start; the current value (modifiable via
+    the <A HREF="../../../../net/jini/lookup/DiscoveryAdmin.html" title="interface in net.jini.lookup"><CODE>DiscoveryAdmin</CODE></A> methods of Reggie's admin
+    object) is persisted across restarts.
+</table>
+
+<table summary="Describes the listenerPreparer 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>
+    listenerPreparer</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> Specifies the proxy preparer to use for <A HREF="../../../../net/jini/core/event/RemoteEventListener.html" title="interface in net.jini.core.event"><CODE>RemoteEventListener</CODE></A>s registered with this service in
+    calls to <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#notify(net.jini.core.lookup.ServiceTemplate, int, net.jini.core.event.RemoteEventListener, java.rmi.MarshalledObject, long)"><CODE>ServiceRegistrar.notify(net.jini.core.lookup.ServiceTemplate, int, net.jini.core.event.RemoteEventListener, java.rmi.MarshalledObject, long)</CODE></A>.  During
+    event notification, this service calls the <A HREF="../../../../net/jini/core/event/RemoteEventListener.html#notify(net.jini.core.event.RemoteEvent)"><CODE>notify</CODE></A> method on
+    <code>RemoteEventListener</code> instances returned from this preparer.
+    This entry is obtained at service start and restart.
+</table>
+
+<table summary="Describes the locatorPreparer 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>
+    locatorPreparer</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> Specifies the proxy preparer to use for <A HREF="../../../../net/jini/core/discovery/LookupLocator.html" title="class in net.jini.core.discovery"><CODE>LookupLocator</CODE></A>s passed to this service in calls to
+    the <A HREF="../../../../net/jini/admin/JoinAdmin.html#addLookupLocators(net.jini.core.discovery.LookupLocator[])"><CODE>addLookupLocators</CODE></A>,
+    <A HREF="../../../../net/jini/admin/JoinAdmin.html#setLookupLocators(net.jini.core.discovery.LookupLocator[])"><CODE>setLookupLocators</CODE></A> and
+    <A HREF="../../../../net/jini/admin/JoinAdmin.html#removeLookupLocators(net.jini.core.discovery.LookupLocator[])"><CODE>removeLookupLocators</CODE></A>
+    methods of its admin object.  When registering with other lookup services,
+    this service may call or use the constraints assigned to the
+    <code>getRegistrar</code> methods of <code>LookupLocator</code> instances
+    returned from this preparer.  This entry is obtained at service start and
+    restart.
+</table>
+
+<table summary="Describes the loginContext 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>
+    loginContext</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/javax/security/auth/login/LoginContext.html" title="class or interface in javax.security.auth.login"><CODE>LoginContext</CODE></A>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td> Do not perform JAAS login
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the JAAS login context to use for performing a
+    JAAS login and supplying the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/javax/security/auth/Subject.html" title="class or interface in javax.security.auth"><CODE>Subject</CODE></A> to use
+    when running the service.  If this entry is not specified or if it is
+    specified with a value of <code>null</code>, no JAAS login is
+    performed. This entry is obtained at service start and restart.
+</table>
+
+<table summary="Describes the minMaxEventLease 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>
+    minMaxEventLease</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>1000 * 60 * 30L</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the lower bound for the maximum value allowed
+    for event leases, in milliseconds.  The maximum event lease granted is
+    never less than the specified value, but may be greater than it if the
+    expected average time between lease renewals (based on the current number
+    of service and event registrations) would be less than the value of the
+    <code>minRenewalInterval</code> configuration entry.  This entry replaces
+    in function the <code>setMinMaxEventLease</code> method of the
+    <code>RegistrarAdmin</code> interface supported by previous implementations
+    of Reggie, and is obtained at service start and restart.
+</table>
+
+<table summary="Describes the minMaxServiceLease 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>
+    minMaxServiceLease</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>1000 * 60 * 5L</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the lower bound for the maximum value allowed
+    for service leases, in milliseconds.  The maximum service lease granted is
+    never less than the specified value, but may be greater than it if the
+    expected average time between lease renewals (based on the current number
+    of service and event registrations) would be less than the value of the
+    <code>minRenewalInterval</code> configuration entry.  This entry replaces
+    in function the <code>setMinMaxServiceLease</code> method of the
+    <code>RegistrarAdmin</code> interface supported by previous implementations
+    of Reggie, and is obtained at service start and restart.
+</table>
+
+<table summary="Describes the minRenewalInterval 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>
+    minRenewalInterval</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>100L</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the minimum average time to maintain between
+    lease renewals, in milliseconds.  This entry replaces in function the
+    <code>setMinRenewalInterval</code> method of the
+    <code>RegistrarAdmin</code> interface supported by previous implementations
+    of Reggie, and is obtained at service start and restart.
+</table>
+
+<a name="multicastAnnouncementInterval"></a>
+<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>1000 * 60 * 2L</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the number of milliseconds to wait in between
+    sending multicast announcement packets.  This entry is consulted instead of
+    the <code>net.jini.discovery.announce</code> system property used by
+    previous implementations of Reggie.  This entry is obtained at service
+    start and restart.
+</table>
+
+<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>1000 * 60 * 5</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the number of milliseconds to wait in between
+    retrying multicast interfaces for which initial attempts at enablement
+    failed.  Failed interfaces are retried at the given interval until they are
+    successfully enabled; the overall set of multicast interfaces to use is
+    configurable via the <code>multicastInterfaces</code> configuration entry.
+    This entry is obtained at service start and restart.
+</table>
+
+<a name="multicastInterfaces"></a>
+<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> <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>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td> Use all network interfaces
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the network interfaces to use to send and
+    receive multicast request and announcement packets as part of multicast
+    discovery.  If no value is specified for this entry, then all network
+    interfaces of the host are used.  If the entry value is <code>null</code>,
+    then the interface to which the operating system defaults is used.  If the
+    entry value is a zero-length array, then multicast discovery is disabled.
+    This entry is consulted instead of the
+    <code>net.jini.discovery.interface</code> system property used by previous
+    implementations of Reggie, and is obtained at service start and restart.
+</table>
+
+<table summary="Describes the multicastRequestSubjectChecker
+                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>
+    multicastRequestSubjectChecker</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Type: <td> <A HREF="../../../../com/sun/jini/discovery/ClientSubjectChecker.html" title="interface in com.sun.jini.discovery"><CODE>ClientSubjectChecker</CODE></A>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td> Do not check <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/javax/security/auth/Subject.html" title="class or interface in javax.security.auth"><CODE>Subject</CODE></A>s of
+    multicast requests
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the object to use for screening multicast
+    requests based on their authenticated <code>Subject</code>s.  This entry is
+    obtained at service start and restart.
+</table>
+
+<a name="persistenceDirectory"></a>
+<table summary="Describes the persistenceDirectory 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>
+    persistenceDirectory</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> <em>Required: no default</em>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the directory where the service's persistent
+    state is recorded.  This entry is obtained at service start and restart,
+    and is only supported by <code>PersistentRegistrarImpl</code>, which
+    requires it to be set.
+</table>
+
+<a name="persistenceSnapshotThreshold"></a>
+<table summary="Describes the persistenceSnapshotThreshold 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>
+    persistenceSnapshotThreshold</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>200</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the minimum number of log updates before a new
+    snapshot can be taken.  This entry replaces the
+    <code>setLogToSnapshotThreshold</code> method of the
+    <code>RegistrarAdmin</code> interface supported by previous implementations
+    of Reggie.  It is obtained at service start and restart, and is only
+    supported by <code>PersistentRegistrarImpl</code>.
+</table>
+
+<a name="persistenceSnapshotWeight"></a>
+<table summary="Describes the persistenceSnapshotWeight 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>
+    persistenceSnapshotWeight</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Type: <td> <code>float</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td> <code>10.0F</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the weight factor by which the snapshot size is
+    multiplied in order to determine when to take the next snapshot--when the
+    number of log records exceeds the product of
+    <code>persistenceSnapshotWeight</code> and the snapshot size and is larger
+    than the <code>persistenceSnapshotThreshold</code> value, then a snapshot
+    is taken.  This entry replaces the <code>setSnapshotWeight</code> method of
+    the <code>RegistrarAdmin</code> interface supported by previous
+    implementations of Reggie.  It is obtained at service start and restart,
+    and is only supported by <code>PersistentRegistrarImpl</code>.
+</table>
+
+<a name="recoveredListenerPreparer"></a>
+<table summary="Describes the recoveredListenerPreparer 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>
+    recoveredListenerPreparer</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> Specifies the proxy preparer to use for <A HREF="../../../../net/jini/core/event/RemoteEventListener.html" title="interface in net.jini.core.event"><CODE>RemoteEventListener</CODE></A>s recovered from the service's
+    persistent state log.  During event notification, this service calls the
+    <A HREF="../../../../net/jini/core/event/RemoteEventListener.html#notify(net.jini.core.event.RemoteEvent)"><CODE>notify</CODE></A> method on
+    <code>RemoteEventListener</code> instances returned from this preparer.
+    This entry is obtained at service start and restart, and is only supported
+    by <code>PersistentRegistrarImpl</code>.
+</table>
+
+<a name="recoveredLocatorPreparer"></a>
+<table summary="Describes the recoveredLocatorPreparer 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>
+    recoveredLocatorPreparer</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> Specifies the proxy preparer to use for <A HREF="../../../../net/jini/core/discovery/LookupLocator.html" title="class in net.jini.core.discovery"><CODE>LookupLocator</CODE></A>s recovered from the service's
+    persistent state log.  When registering with other lookup services, this
+    service may call or use the constraints assigned to the
+    <code>getRegistrar</code> methods of <code>LookupLocator</code> instances
+    returned from this preparer.  This entry is obtained at service start and
+    restart, and is only supported by <code>PersistentRegistrarImpl</code>.
+</table>
+
+<table summary="Describes the resourceIdGenerator 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>
+    resourceIdGenerator</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Type: <td> <A HREF="../../../../com/sun/jini/reggie/UuidGenerator.html" title="class in com.sun.jini.reggie"><CODE>UuidGenerator</CODE></A>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td> <code>new UuidGenerator()</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the generator for producing <A HREF="../../../../net/jini/id/Uuid.html" title="class in net.jini.id"><CODE>Uuid</CODE></A>s assigned to resources dispensed by the service, such as
+    leases and service registrations.  This entry is obtained at service start
+    and restart.
+</table>
+
+<table summary="Describes the serverExporter 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>
+    serverExporter</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Type: <td> <A HREF="../../../../net/jini/export/Exporter.html" title="interface in net.jini.export"><CODE>Exporter</CODE></A>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td>
+<pre>
+// if non-activatable
+new <A HREF="../../../../net/jini/jeri/BasicJeriExporter.html" title="class in net.jini.jeri"><CODE>BasicJeriExporter</CODE></A>(
+    <A HREF="../../../../net/jini/jeri/tcp/TcpServerEndpoint.html" title="class in net.jini.jeri.tcp"><CODE>TcpServerEndpoint</CODE></A>.getInstance(0),
+    new <A HREF="../../../../net/jini/jeri/BasicILFactory.html" title="class in net.jini.jeri"><CODE>BasicILFactory</CODE></A>())
+
+// if activatable
+new <A HREF="../../../../net/jini/activation/ActivationExporter.html" title="class in net.jini.activation"><CODE>ActivationExporter</CODE></A>(
+    activationID,
+    new BasicJeriExporter(
+        TcpServerEndpoint.getInstance(0),
+        new BasicILFactory()))
+</pre>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the exporter to use to export this service.
+    Note that this entry, while supported by both
+    <code>TransientRegistrarImpl</code> and
+    <code>PersistentRegistrarImpl</code>, has a different default value for
+    <code>PersistentRegistrarImpl</code> in the activatable case.  For the
+    activatable case, the <code>activationID</code> value is passed in as the
+    <code>data</code> argument in the call to <A HREF="../../../../net/jini/config/Configuration.html#getEntry(java.lang.String, java.lang.String, java.lang.Class, java.lang.Object, java.lang.Object)"><CODE>Configuration.getEntry(String,String,Class,Object,Object)</CODE></A>.
+    This entry is obtained at service start and restart.
+</table>
+
+<table summary="Describes the serviceIdGenerator 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>
+    serviceIdGenerator</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Type: <td> <A HREF="../../../../com/sun/jini/reggie/UuidGenerator.html" title="class in com.sun.jini.reggie"><CODE>UuidGenerator</CODE></A>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td> <code>new UuidGenerator()</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the generator for producing service IDs
+    assigned to services registering with this lookup service that do not
+    already have service IDs.  This generator is also used to produce the
+    service ID for this lookup service.  The <A HREF="../../../../net/jini/id/Uuid.html" title="class in net.jini.id"><CODE>Uuid</CODE></A>s returned
+    by the generator are converted into <A HREF="../../../../net/jini/core/lookup/ServiceID.html" title="class in net.jini.core.lookup"><CODE>ServiceID</CODE></A>
+    instances by extracting their 128-bit values and using them to construct
+    corresponding <code>ServiceID</code>s.  This entry is obtained at service
+    start and restart.
+</table>
+
+<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 TaskManager(50, 1000 * 15, 1.0F)</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the object that pools and manages the threads
+    used by this service to respond to discovery requests and send event
+    notifications.  This entry is obtained at service start and restart.
+</table>
+
+<a name="unexportTimeout"></a>
+<table summary="Describes the unexportTimeout 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>
+    unexportTimeout</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>1000 * 60 *2L</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the maximum time in milliseconds to wait for
+    in-progress calls to finish before forcibly unexporting Reggie during
+    shutdown.
+</table>
+
+<a name="unexportWait"></a>
+<table summary="Describes the unexportWait 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>
+    unexportWait</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>1000L</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the maximum time in milliseconds to wait 
+    between unexport attempts during shutdown while <a href=#unexportTimeout>
+    <code>unexportTimeout</code></a> has not expired.
+</table>
+
+<a name="unicastDiscoveryHost"></a>
+<table summary="Describes the unicastDiscoveryHost 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>
+    unicastDiscoveryHost</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().getHostName()</code>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the host name for unicast discovery, which is
+    advertised in multicast announcements and (protocol 2) unicast discovery
+    responses.  This entry is obtained at service start and restart.
+</table>
+
+<table summary="Describes the unicastDiscoverySubjectChecker
+                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>
+    unicastDiscoverySubjectChecker</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Type: <td> <A HREF="../../../../com/sun/jini/discovery/ClientSubjectChecker.html" title="interface in com.sun.jini.discovery"><CODE>ClientSubjectChecker</CODE></A>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Default: <td> Do not check client <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/javax/security/auth/Subject.html" title="class or interface in javax.security.auth"><CODE>Subject</CODE></A>
+    during unicast discovery
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> Specifies the object to use for screening unicast
+    discovery attempts based on their authenticated client
+    <code>Subject</code>s.  This entry is obtained at service start and
+    restart.
+</table>
+<p>
+
+<h3>Other Configuration Entries</h3>
+
+Reggie passes its configuration when creating instances of the following
+configurable classes, which may support additional configuration entries:
+<ul>
+<li> <A HREF="../../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><CODE>LookupDiscoveryManager</CODE></A>, used to discover
+     lookup services, as specified by the <a href="#discoveryManager">
+     <code>discoveryManager</code></a> configuration entry
+<li> <A HREF="../../../../net/jini/lookup/JoinManager.html" title="class in net.jini.lookup"><CODE>JoinManager</CODE></A>, used to manage lookup service
+     registrations
+</ul> <p>
+
+<a name="access_control">
+<h2>Access Control Permission Targets</h2>
+</a>
+
+The following table lists the remote methods on Reggie's proxy objects and
+the associated target names for enforcing access control using <A HREF="../../../../com/sun/jini/reggie/RegistrarPermission.html" title="class in com.sun.jini.reggie"><CODE>RegistrarPermission</CODE></A>: <p>
+
+<table border="1" cellpadding="5"
+       summary="Describes the proxy methods and associated target names for
+                RegistrarPermission">
+
+<tr> <th> Proxy Method <th> Target Name
+
+<!-- ServiceRegistrar -->
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#getEntryClasses(net.jini.core.lookup.ServiceTemplate)"><CODE>ServiceRegistrar.getEntryClasses</CODE></A>
+     <td> <code>getEntryClasses</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#getFieldValues(net.jini.core.lookup.ServiceTemplate, int, java.lang.String)"><CODE>ServiceRegistrar.getFieldValues</CODE></A>
+     <td> <code>getFieldValues</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#getGroups()"><CODE>ServiceRegistrar.getGroups</CODE></A>
+     <td> <code>getMemberGroups</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#getLocator()"><CODE>ServiceRegistrar.getLocator</CODE></A>
+     <td> <code>getLocator</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#getServiceTypes(net.jini.core.lookup.ServiceTemplate, java.lang.String)"><CODE>ServiceRegistrar.getServiceTypes</CODE></A>
+     <td> <code>getServiceTypes</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#lookup(net.jini.core.lookup.ServiceTemplate)"><CODE>ServiceRegistrar.lookup(ServiceTemplate)</CODE></A>
+     <td> <code>lookup</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#lookup(net.jini.core.lookup.ServiceTemplate, int)"><CODE>ServiceRegistrar.lookup(ServiceTemplate, int)</CODE></A>
+     <td> <code>lookup</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#notify(net.jini.core.lookup.ServiceTemplate, int, net.jini.core.event.RemoteEventListener, java.rmi.MarshalledObject, long)"><CODE>ServiceRegistrar.notify</CODE></A>
+     <td> <code>notify</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#register(net.jini.core.lookup.ServiceItem, long)"><CODE>ServiceRegistrar.register</CODE></A>
+     <td> <code>register</code>
+
+<!-- Administrable -->
+
+<tr> <td> <A HREF="../../../../net/jini/admin/Administrable.html#getAdmin()"><CODE>Administrable.getAdmin</CODE></A>
+     <td> <code>getAdmin</code>
+
+<!-- ServiceProxyAccessor -->
+
+<tr> <td> <A HREF="../../../../com/sun/jini/start/ServiceProxyAccessor.html#getServiceProxy()"><CODE>ServiceProxyAccessor.getServiceProxy</CODE></A>
+     <td> <code>getServiceProxy</code>
+
+<!-- ServiceRegistration -->
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistration.html#addAttributes(net.jini.core.entry.Entry[])"><CODE>ServiceRegistration.addAttributes</CODE></A>
+     <td> <code>addAttributes</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistration.html#modifyAttributes(net.jini.core.entry.Entry[], net.jini.core.entry.Entry[])"><CODE>ServiceRegistration.modifyAttributes</CODE></A>
+     <td> <code>modifyAttributes</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lookup/ServiceRegistration.html#setAttributes(net.jini.core.entry.Entry[])"><CODE>ServiceRegistration.setAttributes</CODE></A>
+     <td> <code>setAttributes</code>
+
+<!-- Lease -->
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/Lease.html#cancel()"><CODE>Lease.cancel</CODE></A>
+          (for event leases)
+     <td> <code>cancelEventLease</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/Lease.html#renew(long)"><CODE>Lease.renew</CODE></A>
+          (for event leases)
+     <td> <code>renewEventLease</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/Lease.html#cancel()"><CODE>Lease.cancel</CODE></A>
+          (for service leases)
+     <td> <code>cancelServiceLease</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/Lease.html#renew(long)"><CODE>Lease.renew</CODE></A>
+          (for service leases)
+     <td> <code>renewServiceLease</code>
+
+<!-- LeaseMap -->
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/LeaseMap.html#cancelAll()"><CODE>LeaseMap.cancelAll</CODE></A>
+     <td> <code>cancelLeases</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/LeaseMap.html#renewAll()"><CODE>LeaseMap.renewAll</CODE></A>
+     <td> <code>renewLeases</code>
+
+<!-- DiscoveryAdmin -->
+
+<tr> <td> <A HREF="../../../../net/jini/lookup/DiscoveryAdmin.html#addMemberGroups(java.lang.String[])"><CODE>DiscoveryAdmin.addMemberGroups</CODE></A>
+     <td> <code>addMemberGroups</code>
+
+<tr> <td> <A HREF="../../../../net/jini/lookup/DiscoveryAdmin.html#getMemberGroups()"><CODE>DiscoveryAdmin.getMemberGroups</CODE></A>
+     <td> <code>getMemberGroups</code>
+
+<tr> <td> <A HREF="../../../../net/jini/lookup/DiscoveryAdmin.html#getUnicastPort()"><CODE>DiscoveryAdmin.getUnicastPort</CODE></A>
+     <td> <code>getUnicastPort</code>
+
+<tr> <td> <A HREF="../../../../net/jini/lookup/DiscoveryAdmin.html#removeMemberGroups(java.lang.String[])"><CODE>DiscoveryAdmin.removeMemberGroups</CODE></A>
+     <td> <code>removeMemberGroups</code>
+
+<tr> <td> <A HREF="../../../../net/jini/lookup/DiscoveryAdmin.html#setMemberGroups(java.lang.String[])"><CODE>DiscoveryAdmin.setMemberGroups</CODE></A>
+     <td> <code>setMemberGroups</code>
+
+<tr> <td> <A HREF="../../../../net/jini/lookup/DiscoveryAdmin.html#setUnicastPort(int)"><CODE>DiscoveryAdmin.setUnicastPort</CODE></A>
+     <td> <code>setUnicastPort</code>
+
+<!-- JoinAdmin -->
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#addLookupAttributes(net.jini.core.entry.Entry[])"><CODE>JoinAdmin.addLookupAttributes</CODE></A>
+     <td> <code>addLookupAttributes</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#addLookupGroups(java.lang.String[])"><CODE>JoinAdmin.addLookupGroups</CODE></A>
+     <td> <code>addLookupGroups</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#addLookupLocators(net.jini.core.discovery.LookupLocator[])"><CODE>JoinAdmin.addLookupLocators</CODE></A>
+     <td> <code>addLookupLocators</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#getLookupAttributes()"><CODE>JoinAdmin.getLookupAttributes</CODE></A>
+     <td> <code>getLookupAttributes</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#getLookupGroups()"><CODE>JoinAdmin.getLookupGroups</CODE></A>
+     <td> <code>getLookupGroups</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#getLookupLocators()"><CODE>JoinAdmin.getLookupLocators</CODE></A>
+     <td> <code>getLookupLocators</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#modifyLookupAttributes(net.jini.core.entry.Entry[], net.jini.core.entry.Entry[])"><CODE>JoinAdmin.modifyLookupAttributes</CODE></A>
+     <td> <code>modifyLookupAttributes</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#removeLookupGroups(java.lang.String[])"><CODE>JoinAdmin.removeLookupGroups</CODE></A>
+     <td> <code>removeLookupGroups</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#removeLookupLocators(net.jini.core.discovery.LookupLocator[])"><CODE>JoinAdmin.removeLookupLocators</CODE></A>
+     <td> <code>removeLookupLocators</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#setLookupGroups(java.lang.String[])"><CODE>JoinAdmin.setLookupGroups</CODE></A>
+     <td> <code>setLookupGroups</code>
+
+<tr> <td> <A HREF="../../../../net/jini/admin/JoinAdmin.html#setLookupLocators(net.jini.core.discovery.LookupLocator[])"><CODE>JoinAdmin.setLookupLocators</CODE></A>
+     <td> <code>setLookupLocators</code>
+
+<!-- DestroyAdmin -->
+
+<tr> <td> <A HREF="../../../../com/sun/jini/admin/DestroyAdmin.html#destroy()"><CODE>DestroyAdmin.destroy</CODE></A>
+     <td> <code>destroy</code>
+
+<!-- ProxyTrust -->
+
+<tr> <td> <A HREF="../../../../net/jini/security/proxytrust/ProxyTrust.html#getProxyVerifier()"><CODE>ProxyTrust.getProxyVerifier</CODE></A>
+     <td> <code>getProxyVerifier</code>
+
+</table> <p>
+
+<a name="logging">
+<h2>Loggers and Logging Levels</h2>
+</a>
+
+Both <code>PersistentRegistrarImpl</code> and
+<code>TransientRegistrarImpl</code> log diagnostic information to 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>com.sun.jini.reggie</code>.  The
+server-side components of each implementation log information at the following
+logging levels: <p>
+
+<table border="1" cellpadding="5"
+       summary="Describes logging performed by Reggie's server-side components
+                at different logging levels">
+
+  <caption halign="center" valign="top"><b><code>
+           com.sun.jini.reggie</code> (server-side)</b></caption>
+
+  <tr> <th scope="col"> Level <th scope="col"> Description
+
+  <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>
+  Exceptions that prevent service startup
+
+  <tr> <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#WARNING" title="class or interface in java.util.logging"><CODE>WARNING</CODE></A> <td>
+  Exceptions that, while non-fatal, indicate compromised service functionality,
+  such as failures to persist or recover state, or to send multicast
+  announcements on an explicitly configured interface
+
+  <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>
+  Service start, restart, or destruction events, as well as exceptions of
+  moderate severity, such as failures to send event notifications or multicast
+  announcements, or to establish a unicast discovery connection
+
+  <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>
+  Changes made to the service through administrative interfaces, as well as
+  high-level service configuration information, such as the persistence
+  directory (if any) and multicast interfaces (if any) used
+
+  <tr> <td> <A HREF="../../../../com/sun/jini/logging/Levels.html#HANDLED"><CODE>HANDLED</CODE></A> <td>
+  Minor exceptions involving activation, discovery, event handling, and
+  shutdown that are handled internally by the service, and not reflected to
+  callers
+
+  <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>
+  Changes in service state, such as the establishment, expiration, and
+  cancellation of service and event listener registrations, as well as invalid
+  service ID values
+
+  <tr> <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINER" title="class or interface in java.util.logging"><CODE>FINER</CODE></A> <td>
+  Persistent state log operations
+
+</table> <p>
+
+The service proxies for <code>PersistentRegistrarImpl</code> and
+<code>TransientRegistrarImpl</code> log information at the following logging
+levels: <p>
+
+<table border="1" cellpadding="5"
+       summary="Describes logging performed by Reggie's service proxy at
+                different logging levels">
+
+  <caption halign="center" valign="top"><b><code>
+           com.sun.jini.reggie</code> (service proxy)</b></caption>
+
+  <tr> <th> Level   <th> Description
+
+  <tr> <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#WARNING" title="class or interface in java.util.logging"><CODE>WARNING</CODE></A> <td>
+  Invalid service IDs used for registration
+
+  <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>
+  Service item unmarshalling exceptions
+
+</table> <p>
+
+<a name="system_properties">
+<h2>System Properties</h2>
+</a>
+
+Both <code>TransientRegistrarImpl</code> and
+<code>PersistentRegistrarImpl</code> service implementations support the
+following system property: <p>
+
+<a name="enableImplToStubReplacement"></a>
+<table summary="Describes the com.sun.jini.reggie.enableImplToStubReplacement
+                system property"
+       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>
+    com.sun.jini.reggie.enableImplToStubReplacement</code></font>
+  <tr valign="top"> <td> &nbsp <th scope="row" align="right">
+    Description: <td> This system property is interpreted as a
+    <code>boolean</code> value (see <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Boolean.html#getBoolean(java.lang.String)" title="class or interface in java.lang"><CODE>Boolean.getBoolean</CODE></A>).  If <code>true</code>, then JRMP impl-to-stub
+    replacement will be attempted on the service proxy objects contained in
+    <A HREF="../../../../net/jini/core/lookup/ServiceItem.html" title="class in net.jini.core.lookup"><CODE>ServiceItem</CODE></A>s passed to the <A HREF="../../../../net/jini/core/lookup/ServiceRegistrar.html#register(net.jini.core.lookup.ServiceItem, long)"><CODE>register</CODE></A> method of Reggie's
+    proxy.  By default, this behavior is not enabled--it is provided as a
+    transitional measure for services that depend on JRMP impl-to-stub
+    replacement when registering with Reggie.
+</table> <p>
+
+<a name="examples">
+<h2>Examples for Running Reggie</h2>
+</a>
+
+This section provides examples of running Reggie in various configurations.
+
+<ul>
+<li> <a href="#assumptions">Assumptions for running the examples</a>
+<li> <a href="#discovery_constraints">Setting Discovery Constraints</a>
+<li> JRMP configurations
+     <ul>
+     <li> <a href="#transient_jrmp">Transient</a>
+     <li> <a href="#persistent_jrmp">Persistent</a>
+     <li> <a href="#activatable_jrmp">Activatable</a>
+     </ul>
+<li> Jini extensible remote invocation (Jini ERI) configurations
+     <ul>
+     <li> <a href="#transient">Transient</a>
+     <li> <a href="#persistent">Persistent</a>
+     <li> <a href="#activatable">Activatable</a>
+     </ul>
+<li> <a href="#stop_activatable">Stopping activatable configurations</a>
+</ul> <p>
+
+<a name="assumptions">
+<h3>Assumptions for Running the Examples</h3>
+</a>
+
+The examples below make the following assumptions: <p>
+
+<ul>
+<li> The Java(TM) 2 Platform, Standard Edition, (J2SE(TM)) has been
+     installed, and its commands are available in the current path
+<li> The Apache River release has been installed in the
+     <var><b>install_dir</b></var> directory
+<li> The example configuration and policy files described below are
+     available in the <var><b>config_dir</b></var> directory
+<li> The local host name is <var><b>your_host</b></var>
+<li> The instance of Reggie to run will advertise itself as a member of the
+     group named <var><b>your.group</b></var>
+<li> The HTTP server for download JAR files is running on
+     <var><b>your_host</b></var> and is available on port
+     <var><b>http_port</b></var>. This HTTP server is serving files located
+     in the <var><b>install_dir</b></var>/lib-dl directory. You can use the
+     <A HREF="../../../../com/sun/jini/tool/ClassServer.html" title="class in com.sun.jini.tool"><CODE>ClassServer</CODE></A> class for this purpose.
+<li> The examples are being run on UNIX platforms
+<li> The examples are being run on a secure network where access control
+     and authentication are not needed. See the <a
+     href="../../../../../../source/src/com/sun/jini/example/hello/index.html">
+     hello example</a> for some same
+     client and service configurations that enforce security.
+<li> For activatable services, an activation system is running on
+     <var><b>your_host</b></var>. You can use the <A HREF="../../../../com/sun/jini/phoenix/package-summary.html"><CODE>com.sun.jini.phoenix</CODE></A> implementation for this purpose.
+</ul> <p>
+
+Throughout the example, items in <var><b>bold</b></var> need to be
+customized for your local environment.
+
+<a name="discovery_constraints">
+<h3>Setting Discovery Constraints</h3>
+</a>
+
+Discovery constraints for Reggie can be set by specifying a 
+<code>discoveryConstraints</code> entry under the 
+<code>com.sun.jini.reggie</code> component.  For example, to specify that
+Reggie must wait at most five seconds to connect to a client attempting 
+discovery and at most three minutes to read data from a connected client 
+attempting discovery, the following entry must be added to Reggie's 
+configuration source file under the <code>com.sun.jini.reggie</code> component:
+ 
+<blockquote>
+<pre>
+discoveryConstraints = new BasicMethodConstraints(
+    new MethodDesc[] {
+        new MethodDesc("unicastDiscovery", 
+            new InvocationConstraints(
+                new InvocationConstraint[] {
+                    new ConnectionRelativeTime(5000),
+                    new UnicastSocketTimeout(180000) // 3*60*1000
+                }, 
+                null
+            )
+        )    
+    }
+);
+</pre>
+</blockquote><p>
+
+As another example, to specify that Reggie must use version two of of the 
+multicast request, multicast announcement, and unicast discovery protocols, the
+following entry must be added to Reggie's configuration source file under the
+<code>com.sun.jini.reggie</code> component.
+
+<blockquote>
+<pre>
+discoveryConstraints = new BasicMethodConstraints(
+    new InvocationConstraints(DiscoveryProtocolVersion.TWO, null)
+);
+</pre>
+</blockquote><p>
+
+<a name="transient_jrmp">
+<h3>Starting Transient Reggie using JRMP</h3>
+</a>
+
+To run a transient Reggie, which does not store any information
+persistently or use the activation system to restart itself, using JRMP
+for remote communication, run the following command. <p>
+
+<blockquote>
+<pre>
+java -Djava.security.policy=<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a> \
+     -jar <var><b>install_dir</b></var>/lib/start.jar \
+     <a href="#start_transient_jrmp_config"><var><b>config_dir</b></var>/start-transient-jrmp-reggie.config</a>
+</pre>
+</blockquote> <p>
+
+This configuration uses the following files.
+
+<a name="jsk_all_policy">
+<h4>File <var><b>config_dir</b></var>/jsk-all.policy</h4>
+</a>
+
+Use this security policy file for starting and running all Reggie
+configurations. This file grants all permissions to local code included
+in the <code>lib</code> subdirectory of the Apache River release installation. <p>
+
+<blockquote>
+<pre>
+grant codebase "file:<var><b>install_dir</b></var>/lib/*" {
+    permission java.security.AllPermission;
+};
+</pre>
+</blockquote>
+
+<a name="start_transient_jrmp_config">
+<h4>File <var><b>config_dir</b></var>/start-transient-jrmp-reggie.config</h4>
+</a>
+
+Use this configuration source file to start transient Reggie using
+JRMP. <p>
+
+<blockquote>
+<pre>
+import com.sun.jini.start.NonActivatableServiceDescriptor;
+import com.sun.jini.start.ServiceDescriptor;
+
+com.sun.jini.start {
+    private static codebase = "http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/reggie-dl.jar"
+        + " http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/jsk-dl.jar";
+    private static policy = "<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a>";
+    private static classpath = "<var><b>install_dir</b></var>/lib/reggie.jar";
+    private static config = "<a href="#transient_jrmp_config"><var><b>config_dir</b></var>/transient-jrmp-reggie.config</a>";
+
+    static serviceDescriptors = new ServiceDescriptor[] {
+        new NonActivatableServiceDescriptor(
+            codebase, policy, classpath,
+            "com.sun.jini.reggie.TransientRegistrarImpl",
+            new String[] { config })
+    };
+}
+</pre>
+</blockquote>
+
+<a name="transient_jrmp_config">
+<h4>File <var><b>config_dir</b></var>/transient-jrmp-reggie.config</h4>
+</a>
+
+Use this configuration source file to run transient Reggie using JRMP. <p>
+
+<blockquote>
+<pre>
+import net.jini.jrmp.JrmpExporter;
+
+com.sun.jini.reggie {
+    initialMemberGroups = new String[] { "<var><b>your.group</b></var>" };
+    serverExporter = new JrmpExporter();
+}
+</pre>
+</blockquote>
+
+<a name="persistent_jrmp">
+<h3>Starting Persistent Reggie using JRMP</h3>
+</a>
+
+To run a persistent Reggie, which stores information persistently but does
+not use the activation system to restart itself, using JRMP for remote
+communication, run the following command. <p>
+
+<blockquote>
+<pre>
+java -Djava.security.policy=<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a> \
+     -jar <var><b>install_dir</b></var>/lib/start.jar \
+     <a href="#start_persistent_jrmp_config"><var><b>config_dir</b></var>/start-persistent-jrmp-reggie.config</a>
+</pre>
+</blockquote> <p>
+
+<b>Note:</b> Because JRMP does not provide a convenient way to specify
+the same object ID each time a given object is exported, this
+configuration is only useful for debugging -- an existing service proxy
+cannot be used after the service is restarted. <p>
+
+This configuration uses the following additional files.
+
+<a name="start_persistent_jrmp_config">
+<h4>File <var><b>config_dir</b></var>/start-persistent-jrmp-reggie.config</h4>
+</a>
+
+Use this configuration source file to start persistent Reggie using
+JRMP. <p>
+
+<blockquote>
+<pre>
+import com.sun.jini.start.NonActivatableServiceDescriptor;
+import com.sun.jini.start.ServiceDescriptor;
+
+com.sun.jini.start {
+    private static codebase = "http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/reggie-dl.jar"
+        + " http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/jsk-dl.jar";
+    private static policy = "<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a>";
+    private static classpath = "<var><b>install_dir</b></var>/lib/reggie.jar";
+    private static config = "<a href="#persistent_jrmp_config"><var><b>config_dir</b></var>/persistent-jrmp-reggie.config</a>";
+
+    static serviceDescriptors = new ServiceDescriptor[] {
+        new NonActivatableServiceDescriptor(
+            codebase, policy, classpath,
+            "com.sun.jini.reggie.PersistentRegistrarImpl",
+            new String[] { config })
+    };
+}
+</pre>
+</blockquote>
+
+<a name="persistent_jrmp_config">
+<h4>File <var><b>config_dir</b></var>/persistent-jrmp-reggie.config</h4>
+</a>
+
+Use this configuration source file to run persistent Reggie using
+JRMP. <p>
+
+<blockquote>
+<pre>
+import net.jini.jrmp.JrmpExporter;
+
+com.sun.jini.reggie {
+    initialMemberGroups = new String[] { "<var><b>your.group</b></var>" };
+    persistenceDirectory = "<var><b>config_dir</b></var>/reggie.log";
+    serverExporter = new JrmpExporter();
+}
+</pre>
+</blockquote>
+
+<a name="activatable_jrmp">
+<h3>Starting Activatable Reggie using JRMP</h3>
+</a>
+
+To run an activatable Reggie, which stores information persistently and
+uses the activation system to restart itself, using JRMP for remote
+communication, run the following command. <p>
+
+<blockquote>
+<pre>
+java -Djava.security.policy=<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a> \
+     -jar <var><b>install_dir</b></var>/lib/start.jar \
+     <a href="#start_activatable_jrmp_config"><var><b>config_dir</b></var>/start-activatable-jrmp-reggie.config</a>
+</pre>
+</blockquote> <p>
+
+You should remove the <var><b>config_dir</b></var>/group.log directory
+before running this command. Note that the activation system will
+restart the activatable Reggie service as needed until Reggie is
+shutdown. <p>
+
+Remember to remove the <var><b>config_dir</b></var>/reggie.log directory
+before running this command if you want Reggie to forget registrations and
+settings made in previous invocations. <p>
+
+This configuration uses the following additional files.
+
+<a name="start_activatable_jrmp_config">
+<h4>File <var><b>config_dir</b></var>/start-activatable-jrmp-reggie.config</h4>
+</a>
+
+Use this configuration source file to start activatable Reggie using
+JRMP. <p>
+
+<blockquote>
+<pre>
+import com.sun.jini.start.ServiceDescriptor;
+import com.sun.jini.start.SharedActivatableServiceDescriptor;
+import com.sun.jini.start.SharedActivationGroupDescriptor;
+
+com.sun.jini.start {
+    private static reggieCodebase = "http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/reggie-dl.jar"
+        + " http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/jsk-dl.jar";
+    private static reggiePolicy = "<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a>";
+    private static reggieClasspath = "<var><b>install_dir</b></var>/lib/reggie.jar";
+    private static reggieConfig = "<a href="#activatable_jrmp_config"><var><b>config_dir</b></var>/activatable-jrmp-reggie.config</a>";
+
+    private static groupCodebase = "http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/group-dl.jar";
+    private static groupPolicy = "<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a>";
+    private static groupClasspath = "<var><b>install_dir</b></var>/lib/sharedvm.jar";
+    private static groupPersistenceDirectory = "<var><b>config_dir</b></var>/group.log";
+
+    static serviceDescriptors = new ServiceDescriptor[] {
+        new SharedActivationGroupDescriptor(
+            groupPolicy, groupClasspath, groupPersistenceDirectory,
+            null /* serverCommand */,
+            null /* serverOptions */,
+            null /* serverProperties */),
+        new SharedActivatableServiceDescriptor(
+            reggieCodebase, reggiePolicy, reggieClasspath,
+            "com.sun.jini.reggie.PersistentRegistrarImpl",
+            groupPersistenceDirectory,
+            new String[] { reggieConfig },
+            true /* restart */)
+    };
+}
+</pre>
+</blockquote>
+
+<a name="activatable_jrmp_config">
+<h4>File <var><b>config_dir</b></var>/activatable-jrmp-reggie.config</h4>
+</a>
+
+Use this configuration source file to run activatable Reggie using
+JRMP. <p>
+
+<blockquote>
+<pre>
+import java.rmi.activation.ActivationID;
+import net.jini.jrmp.JrmpExporter;
+
+com.sun.jini.reggie {
+    initialMemberGroups = new String[] { "<var><b>your.group</b></var>" };
+    persistenceDirectory = "<var><b>config_dir</b></var>/reggie.log";
+    serverExporter = new JrmpExporter((ActivationID) $data, 0);
+}
+</pre>
+</blockquote>
+
+<a name="stop_activatable">
+<h3>Stopping Activatable Reggie</h3>
+</a>
+
+To destroy the activation group running an activatable Reggie, run
+using either JRMP or Jini ERI, run the following command. <p>
+
+<blockquote>
+<pre>
+java -Djava.security.policy=<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a> \
+     -jar <var><b>install_dir</b></var>/lib/destroy.jar \
+     <a href="#stop_activatable_config"><var><b>config_dir</b></var>/stop-activatable-reggie.config</a>
+</pre>
+</blockquote> <p>
+
+Running this command will remove the
+<var><b>config_dir</b></var>/group.log directory. <p>
+
+Note that this command does not actually destroy the service itself, but
+just destroys the activation group the service is running in. You may
+want to first destroy the service using Reggie's administrable interface,
+or to remove the <var><b>config_dir</b></var>/reggie.log directory after
+destroying the activation group. <p>
+
+This command uses the following additional file.
+
+<a name="stop_activatable_config">
+<h4>File <var><b>config_dir</b></var>/stop-activatable-reggie.config</h4>
+</a>
+
+Use this configuration source file to destroy the activation group for
+an activatable Reggie. <p>
+
+<blockquote>
+<pre>
+import com.sun.jini.start.ServiceDescriptor;
+import com.sun.jini.start.SharedActivatableServiceDescriptor;
+
+com.sun.jini.start {
+    private static codebase = "http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/group-dl.jar";
+    private static policy = "<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a>";
+    private static classpath = "<var><b>install_dir</b></var>/lib/group.jar";
+    private static persistenceDirectory = "<var><b>config_dir</b></var>/group.log";
+
+    static serviceDestructors = new ServiceDescriptor[] {
+        new SharedActivatableServiceDescriptor(
+            codebase, policy, classpath,
+            "com.sun.jini.start.SharedGroupImpl",
+            persistenceDirectory,
+            null /* config */,
+            false /* restart */)
+    };
+}
+</pre>
+</blockquote>
+
+<a name="transient">
+<h3>Starting Transient Reggie using Jini ERI</h3>
+</a>
+
+To run a transient Reggie, which does not store any information
+persistently or use the activation system to restart itself, using Jini
+ERI for remote communication, run the following command. <p>
+
+<blockquote>
+<pre>
+java -Djava.security.policy=<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a> \
+     -jar <var><b>install_dir</b></var>/lib/start.jar \
+     <a href="#start_transient_config"><var><b>config_dir</b></var>/start-transient-reggie.config</a>
+</pre>
+</blockquote> <p>
+
+This configuration uses the following additional files.
+
+<a name="start_transient_config">
+<h4>File <var><b>config_dir</b></var>/start-transient-reggie.config</h4>
+</a>
+
+Use this configuration source file to start transient Reggie using
+Jini ERI. <p>
+
+<blockquote>
+<pre>
+import com.sun.jini.start.NonActivatableServiceDescriptor;
+import com.sun.jini.start.ServiceDescriptor;
+
+com.sun.jini.start {
+    private static codebase = "http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/reggie-dl.jar"
+        + " http://<var><b>your_host</b></var>:<var><b>http_port</b></var>/jsk-dl.jar";
+    private static policy = "<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a>";
+    private static classpath = "<var><b>install_dir</b></var>/lib/reggie.jar";
+    private static config = "<a href="#transient_config"><var><b>config_dir</b></var>/transient-reggie.config</a>";
+
+    static serviceDescriptors = new ServiceDescriptor[] {
+        new NonActivatableServiceDescriptor(
+            codebase, policy, classpath,
+            "com.sun.jini.reggie.TransientRegistrarImpl",
+            new String[] { config })
+    };
+}
+</pre>
+</blockquote>
+
+<a name="transient_config">
+<h4>File <var><b>config_dir</b></var>/transient-reggie.config</h4>
+</a>
+
+Use this configuration source file to run transient Reggie using Jini
+ERI. <p>
+
+<blockquote>
+<pre>
+com.sun.jini.reggie {
+    initialMemberGroups = new String[] { "<var><b>your.group</b></var>" };
+}
+</pre>
+</blockquote>
+
+<a name="persistent">
+<h3>Starting Persistent Reggie using Jini ERI</h3>
+</a>
+
+To run a persistent Reggie, which stores information persistently but does
+not use the activation system to restart itself, using Jini ERI for
+remote communication, run the following command. <p>
+
+<blockquote>
+<pre>
+java -Djava.security.policy=<a href="#jsk_all_policy"><var><b>config_dir</b></var>/jsk-all.policy</a> \
+     -jar <var><b>install_dir</b></var>/lib/start.jar \
+     <a href="#start_persistent_config"><var><b>config_dir</b></var>/start-persistent-reggie.config</a>
+</pre>
+</blockquote> <p>
+
+This configuration uses the following additional files.
+
+<a name="start_persistent_config">
+<h4>File <var><b>config_dir</b></var>/start-persistent-reggie.config</h4>
+</a>
+
+Use this configuration source file to start persistent Reggie using Jini
+ERI. <p>
+
+<blockquote>
+<pre>
+import com.sun.jini.start.NonActivatableServiceDescriptor;
+import com.sun.jini.start.ServiceDescriptor;
+
+com.sun.jini.start {

[... 200 lines stripped ...]