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> </TD>
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-use.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+ </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../com/sun/jini/proxy/package-summary.html"><B>PREV PACKAGE</B></A>
+ <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>
+ <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>
+ <SCRIPT type="text/javascript">
+ <!--
+ if(window==top) {
+ document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+ }
+ //-->
+</SCRIPT>
+<NOSCRIPT>
+ <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</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>
+ <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>
+
+
+<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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ activationIdPreparer</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><CODE>ProxyPreparer</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td>
+ <code>new <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A>()</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description: <td> 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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ activationSystemPreparer</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><CODE>ProxyPreparer</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td>
+ <code>new <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A>()</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description: <td> 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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ discoveryConstraints</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint"><CODE>MethodConstraints</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>null</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description: <td> 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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ discoveryManager</code></font>
+ <tr valign="top"> <td>   <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>   <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>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ initialLookupAttributes</code></font>
+ <tr valign="top"> <td>   <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>   <th scope="row" align="right">
+ Default: <td> <code>new Entry[0]</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ initialLookupGroups</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>String[]</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <A HREF="../../../../net/jini/discovery/DiscoveryGroupManagement.html#NO_GROUPS"><CODE>DiscoveryGroupManagement.NO_GROUPS</CODE></A>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ initialLookupLocators</code></font>
+ <tr valign="top"> <td>   <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>   <th scope="row" align="right">
+ Default: <td> <code>new LookupLocator[0]</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ initialMemberGroups</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>String[]</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>new String[]{ "" }</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ initialUnicastDiscoveryPort</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>int</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>0</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ listenerPreparer</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><CODE>ProxyPreparer</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td>
+ <code>new <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A>()</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description: <td> 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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ locatorPreparer</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><CODE>ProxyPreparer</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td>
+ <code>new <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A>()</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description: <td> 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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ loginContext</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/javax/security/auth/login/LoginContext.html" title="class or interface in javax.security.auth.login"><CODE>LoginContext</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> Do not perform JAAS login
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ minMaxEventLease</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>1000 * 60 * 30L</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ minMaxServiceLease</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>1000 * 60 * 5L</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ minRenewalInterval</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>100L</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ multicastAnnouncementInterval</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>1000 * 60 * 2L</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ multicastInterfaceRetryInterval</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>int</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>1000 * 60 * 5</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ multicastInterfaces</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <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>   <th scope="row" align="right">
+ Default: <td> Use all network interfaces
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ multicastRequestSubjectChecker</code></font>
+ <tr valign="top"> <td>   <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>   <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>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ persistenceDirectory</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>String</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <em>Required: no default</em>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ persistenceSnapshotThreshold</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>int</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>200</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ persistenceSnapshotWeight</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>float</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>10.0F</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ recoveredListenerPreparer</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><CODE>ProxyPreparer</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td>
+ <code>new <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A>()</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description: <td> 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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ recoveredLocatorPreparer</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><CODE>ProxyPreparer</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td>
+ <code>new <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A>()</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description: <td> 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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ resourceIdGenerator</code></font>
+ <tr valign="top"> <td>   <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>   <th scope="row" align="right">
+ Default: <td> <code>new UuidGenerator()</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ serverExporter</code></font>
+ <tr valign="top"> <td>   <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>   <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>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ serviceIdGenerator</code></font>
+ <tr valign="top"> <td>   <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>   <th scope="row" align="right">
+ Default: <td> <code>new UuidGenerator()</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ taskManager</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../com/sun/jini/thread/TaskManager.html" title="class in com.sun.jini.thread"><CODE>TaskManager</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>new TaskManager(50, 1000 * 15, 1.0F)</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ unexportTimeout</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>1000 * 60 *2L</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ unexportWait</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>long</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>1000L</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ unicastDiscoveryHost</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code>String</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>
+ <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/InetAddress.html" title="class or interface in java.net"><CODE>InetAddress</CODE></A>.getLocalHost().getHostName()</code>
+ <tr valign="top"> <td>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ unicastDiscoverySubjectChecker</code></font>
+ <tr valign="top"> <td>   <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>   <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>   <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">•</font>
+ <th scope="col" align="left" colspan="2"> <font size="+1"><code>
+ com.sun.jini.reggie.enableImplToStubReplacement</code></font>
+ <tr valign="top"> <td>   <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 ...]