You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by bu...@apache.org on 2010/12/24 22:58:33 UTC
svn commit: r781579 [5/6] -
/websites/staging/river/trunk/content/river/doc/api/com/sun/jini/outrigger/
Added: websites/staging/river/trunk/content/river/doc/api/com/sun/jini/outrigger/package-summary.html
==============================================================================
--- websites/staging/river/trunk/content/river/doc/api/com/sun/jini/outrigger/package-summary.html (added)
+++ websites/staging/river/trunk/content/river/doc/api/com/sun/jini/outrigger/package-summary.html Fri Dec 24 21:58:32 2010
@@ -0,0 +1,2214 @@
+<!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:27 EST 2010 -->
+<TITLE>
+com.sun.jini.outrigger (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.sun.jini.outrigger package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+ parent.document.title="com.sun.jini.outrigger (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/norm/package-summary.html"><B>PREV PACKAGE</B></A>
+ <A HREF="../../../../com/sun/jini/outrigger/snaplogstore/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/outrigger/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.outrigger
+</H2>
+This is an implementation of a JavaSpaces technology-enabled service.
+<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>Interface Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/AdminIterator.html" title="interface in com.sun.jini.outrigger">AdminIterator</A></B></TD>
+<TD><B>Deprecated.</B> <I>Use <A HREF="../../../../net/jini/space/MatchSet.html" title="interface in net.jini.space"><CODE>MatchSet</CODE></A> instead.</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/ConstrainableJavaSpaceAdmin.html" title="interface in com.sun.jini.outrigger">ConstrainableJavaSpaceAdmin</A></B></TD>
+<TD><B>Deprecated.</B> <I>The <A HREF="../../../../net/jini/space/JavaSpace05.html#contents(java.util.Collection, net.jini.core.transaction.Transaction, long, long)"><CODE>JavaSpace05.contents</CODE></A>
+ method can be used to view the space's contents.</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/JavaSpaceAdmin.html" title="interface in com.sun.jini.outrigger">JavaSpaceAdmin</A></B></TD>
+<TD><B>Deprecated.</B> <I>Invoke the <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A> and <A HREF="../../../../com/sun/jini/admin/DestroyAdmin.html" title="interface in com.sun.jini.admin"><CODE>DestroyAdmin</CODE></A> methods though those interfaces.</I></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/LogOps.html" title="interface in com.sun.jini.outrigger">LogOps</A></B></TD>
+<TD>Methods that log an operation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/Recover.html" title="interface in com.sun.jini.outrigger">Recover</A></B></TD>
+<TD>Methods that recover the state of the space after a restart.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/StorableObject.html" title="interface in com.sun.jini.outrigger">StorableObject</A></B></TD>
+<TD>Interface that must be implemented by objects that must persist their
+ state.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/StorableResource.html" title="interface in com.sun.jini.outrigger">StorableResource</A></B></TD>
+<TD>Sub-interface of <code>StorableObject</code> that must be implemented by
+ objects that represent leased resources and must persist their state.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/Store.html" title="interface in com.sun.jini.outrigger">Store</A></B></TD>
+<TD>This interface defines the methods that any OutriggerServerImpl store must
+ implement.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/StoredObject.html" title="interface in com.sun.jini.outrigger">StoredObject</A></B></TD>
+<TD>Interface for a stored resource.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../com/sun/jini/outrigger/StoredResource.html" title="interface in com.sun.jini.outrigger">StoredResource</A></B></TD>
+<TD>Interface for a stored resource.</TD>
+</TR>
+</TABLE>
+
+
+<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/outrigger/OutriggerPermission.html" title="class in com.sun.jini.outrigger">OutriggerPermission</A></B></TD>
+<TD>Permission that can be used to express the access control policy for an
+ instance of an Outrigger server 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/outrigger/OutriggerServerImpl.html" title="class in com.sun.jini.outrigger">OutriggerServerImpl</A></B></TD>
+<TD>A basic implementation of a JavaSpaces<sup><font size=-2>TM</font></sup>
+ service.</TD>
+</TR>
+</TABLE>
+
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.sun.jini.outrigger Description
+</H2>
+
+<P>
+This is an implementation of a JavaSpaces technology-enabled service.
+In addition to implementing the basic <A HREF="../../../../net/jini/space/JavaSpace.html" title="interface in net.jini.space"><CODE>JavaSpace</CODE></A>
+interface, it all implements the <A HREF="../../../../net/jini/space/JavaSpace05.html" title="interface in net.jini.space"><CODE>JavaSpace05</CODE></A>
+extension. <p>
+
+There are two ways to run Outrigger — as a transient space that loses
+its state between executions, or as a persistent space that maintains state
+between executions. The first is implemented by
+<CODE>com.sun.jini.outrigger.TransientOutriggerImpl</CODE>; the second by
+<CODE>com.sun.jini.outrigger.PersistentOutriggerImpl</CODE>. <CODE>TransientOutriggerImpl</CODE>
+can only be run as a non-activatable server, while
+<CODE>PersistentOutriggerImpl</CODE> can be run as an activatable or
+non-activatable server.<p>
+
+<code>PersistentOutriggerImpl</code> relies on a pluggable persistence
+layer, <A HREF="../../../../com/sun/jini/outrigger/Store.html" title="interface in com.sun.jini.outrigger"><CODE>Store</CODE></A>. Which implementation of the
+<code>Store</code> interface to use is controlled by the <a
+href="#store"><code>store</code></a> configuration entry. Unlike some
+previous releases there is no default <code>Store</code> implementation.
+<p>
+
+This release includes one implementation of the <code>Store</code>
+interface. <A HREF="../../../../com/sun/jini/outrigger/snaplogstore/LogStore.html" title="class in com.sun.jini.outrigger.snaplogstore"><CODE>com.sun.jini.outrigger.snaplogstore.LogStore</CODE></A>, also called
+<em>Snaplogstore</em>. Snaplogstore was introduced in the 2.1beta2
+release. The original implementation of the <code>Store</code> interface,
+<code>com.sun.jini.outrigger.logstore.LogStore</code>, or <em>Logstore</em>
+for short, is no longer available. Snaplogstore and Logstore have different
+scalability characteristics, so if you were using Logstore in the past you
+many want to evaluate how your application works with Snaplogstore.
+
+Because there is no default <code>Store</code> implementation if you are
+using <code>PersistentOutriggerImpl</code> you will need to provide a value
+for the <a href="#store"><code>store</code></a> configuration entry (as
+well as the <a
+href="#persistenceDirectory"><code>persistenceDirectory</code></a>
+configuration entry).
+<p>
+
+The storage formats used by Snaplogstore and Logstore are mutually
+incompatible.<p>
+
+The JAR file <code>outrigger.jar</code>, included in the <code>lib</code>
+subdirectory of the Apache River release
+installation, contains the classes for <code>TransientOutriggerImpl</code>.
+  <code>outrigger.jar</code> also includes, via a JAR file manifest
+classpath directive, a reference to
+<code>jsk-lib.jar</code>. <code>jsk-lib.jar</code> must be in the same
+directory as <code>outrigger.jar</code> for Outrigger to operate
+properly.<p>
+
+<code>outrigger.jar</code> also includes, via a JAR file manifest classpath
+directive, a reference to <code>outrigger-snaplogstore.jar</code>.
+<code>outrigger-snaplogstore.jar</code> adds the classes necessary to run
+<code>PersistentOutriggerImpl</code> with the Snaplogstore implementation of
+<code>Store</code>, and must be in the same directory as
+<code>outrigger.jar</code> for <code>PersistentOutriggerImpl</code> to
+operate properly with snaplogstore.<p>
+
+The JAR files <code>outrigger-dl.jar</code> and <code>jsk-dl.jar</code> in
+the <code>lib-dl</code> directory contain the classes needed to
+instantiate Outrigger's proxy objects in a client. Outrigger's codebase
+should include both of these files.<p>
+
+None of the JAR files discussed in the previous paragraphs include classes
+from <code>jsk-platform.jar</code>. On the server side service starter, the
+service launcher utility, ensures that
+<code>jsk-platform.jar</code> is available to Outrigger. On the client it
+is the responsibility of the client to make <code>jsk-platform.jar</code>
+available. Typically this is done by including
+<code>jsk-platform.jar</code> in the client's classpath.<p>
+
+Outrigger's top level proxy implements <A HREF="../../../../net/jini/admin/Administrable.html" title="interface in net.jini.admin"><CODE>Administrable</CODE></A>
+in addition to <code>JavaSpace</code> and
+<code>JavaSpace05</code>. Outrigger's <em>admin proxy</em> can be obtained
+by calling <A HREF="../../../../net/jini/admin/Administrable.html#getAdmin()"><CODE>Administrable.getAdmin</CODE></A>. The admin proxy implements <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A> and <A HREF="../../../../com/sun/jini/admin/DestroyAdmin.html" title="interface in com.sun.jini.admin"><CODE>DestroyAdmin</CODE></A>. The
+admin proxy will also implement <A HREF="../../../../com/sun/jini/outrigger/ConstrainableJavaSpaceAdmin.html" title="interface in com.sun.jini.outrigger"><CODE>ConstrainableJavaSpaceAdmin</CODE></A> if the server has been
+set up with a Java(TM) remote method invocation (Java RMI) implementation
+that supports constraints, or <A HREF="../../../../com/sun/jini/outrigger/JavaSpaceAdmin.html" title="interface in com.sun.jini.outrigger"><CODE>JavaSpaceAdmin</CODE></A>
+if constraints are not supported. However,
+<code>ConstrainableJavaSpaceAdmin</code> and <code>JavaSpaceAdmin</code>
+have been depreciated and should not be used.
+<p>
+
+This document provides the following information about Outrigger: <ul>
+
+<li> <a href="#configuration">Configuring Outrigger</a>
+<li> <a href="#Blocking Queries">Blocking Queries</a>
+<li> <a href="#access_control">Access Control Permission Targets</a>
+<li> <a href="#logging">Logging</a>
+<li> <a href="#examples">Examples for Running Outrigger</a>
+
+</ul> <p>
+
+
+<a name="configuration">
+<H2>Configuration Entries Consulted By Outrigger</H2>
+</a>
+
+The Outrigger service implementation consults a number of configuration
+entries. Most deployments will find it useful to provide values for one or
+more of the following configuration entries:
+
+<ul>
+<li><a href="#persistenceDirectory"><code>persistenceDirectory</code></a>
+ (required if using <CODE>PersistentOutriggerImpl</CODE>)
+<li><a href="#store"><code>store</code></a>
+ (required if using <CODE>PersistentOutriggerImpl</CODE>)
+<li><a href="#initialLookupGroups"><code>initialLookupGroups</code></a>
+<li><a href="#initialLookupLocators"><code>initialLookupLocators</code></a>
+<li><a href="#initialLookupAttributes"><code>initialLookupAttributes</code></a>
+</ul>
+
+Each of these, except for <code>persistenceDirectory</code> and
+<code>store</code>, has reasonable defaults.<p>
+
+Deployments that want to use a Java RMI implementation other than Jini
+extensible remote invocation (Jini ERI) over TCP/IP on a random port will
+need to provide a value for the <a href="#serverExporter">
+<code>serverExporter</code></a> configuration entry. Deployments that use
+multicast discovery and have special requirements may need to provide
+values for the various <A HREF="../../../../net/jini/discovery/LookupDiscovery.html" title="class in net.jini.discovery"><CODE>LookupDiscovery</CODE></A>
+configuration entries.<p>
+
+Secure deployments will need to provide values for most if not
+all of these configuration entries:
+
+<ul>
+<li><a href="#serverExporter"><code>serverExporter</code></a>
+<li><a href="#loginContext"><code>loginContext</code></a>
+<li><a href="#listenerPreparer"><code>listenerPreparer</code></a>
+<li><a href="#recoveredListenerPreparer">
+ <code>recoveredListenerPreparer</code></a>
+ (if using <CODE>PersistentOutriggerImpl</CODE>)
+<li><a href="#transactionManagerPreparer">
+ <code>transactionManagerPreparer</code></a>
+<li><a href="#recoveredTransactionManagerPreparer">
+ <code>recoveredTransactionManagerPreparer</code></a>
+ (if using <CODE>PersistentOutriggerImpl</CODE>)
+<li><a href="#activationIdPreparer"><code>activationIdPreparer</code></a>
+ (if using activation)
+<li><a href="#activationSystemPreparer">
+ <code>activationSystemPreparer</code></a>
+ (if using activation)
+<li><a href="#lookupLocatorPreparer"><code>lookupLocatorPreparer</code></a>
+<li><a href="#recoveredLookupLocatorPreparer">
+ <code>recoveredLookupLocatorPreparer</code></a>
+ (if using <CODE>PersistentOutriggerImpl</CODE>)
+</ul>
+
+plus the following configuration entries from
+<A HREF="../../../../net/jini/discovery/LookupDiscovery.html" title="class in net.jini.discovery"><CODE>LookupDiscovery</CODE></A> :
+
+<ul>
+<li><code>registrarPreparer</code>
+<li><code>discoveryConstraints</code>
+</ul>
+
+<A HREF="../../../../net/jini/discovery/LookupLocatorDiscovery.html" title="class in net.jini.discovery"><CODE>LookupLocatorDiscovery</CODE></A> :
+
+<ul>
+<li><code>registrarPreparer</code>
+</ul>
+
+and <A HREF="../../../../net/jini/lookup/JoinManager.html" title="class in net.jini.lookup"><CODE>JoinManager</CODE></A> :
+<ul>
+<li><code>registrarPreparer</code>
+<li><code>registrationPreparer</code>
+<li><code>serviceLeasePreparer</code>
+</ul>
+
+
+in addition to providing appropriate security policy files, key stores,
+login configuration files, etc.<p>
+
+The Outrigger service implementation obtains its configuration 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 implementation supports the following configuration entries, with
+component <code>com.sun.jini.outrigger</code>: <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> An instance of
+ <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A> that
+ does nothing
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> 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> passed to the activation
+ constructor. Only obtained if being run as an activatable
+ service. The preparer should expect Outrigger to call the <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 of the
+ proxy being prepared. Obtained at activatable service start and
+ restart.
+ </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> An instance of
+ <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A> that
+ does nothing
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> 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. Only obtained if being
+ run as an activatable service. The preparer should expect Outrigger
+ to call the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/activation/ActivationSystem.html#unregisterGroup(java.rmi.activation.ActivationGroupID)" title="class or interface in java.rmi.activation"><CODE>unregisterGroup</CODE></A>
+ method of the proxy being prepared. Obtained at activatable
+ service start and restart.
+
+ </table>
+
+<a name="contentsLeasePeriodPolicy"></a>
+<table summary="Describes the contentsLeasePeriodPolicy 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>contentsLeasePeriodPolicy</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../com/sun/jini/landlord/LeasePeriodPolicy.html" title="interface in com.sun.jini.landlord"><CODE>LeasePeriodPolicy</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> A <code>new </code><A HREF="../../../../com/sun/jini/landlord/FixedLeasePeriodPolicy.html" title="class in com.sun.jini.landlord"><CODE>FixedLeasePeriodPolicy</CODE></A> that allows leases up
+ to one hour, and grants one hour leases for duration requests of
+ <A HREF="../../../../net/jini/core/lease/Lease.html#ANY"><CODE>Lease.ANY</CODE></A>
+
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Policy used to determine the length of initial
+ grants and renewals of the leases on <A HREF="../../../../net/jini/space/MatchSet.html" title="interface in net.jini.space"><CODE>MatchSet</CODE></A>
+ instances. 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> The object Outrigger should use to find lookups to
+ register with. In addition to <code>DiscoveryManagement</code> it
+ 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>. The <A HREF="../../../../net/jini/discovery/DiscoveryManagement.html#terminate()"><CODE>terminate</CODE></A> method of
+ this object will be called when the service is destroyed. This
+ object must be configured with an empty set of multicast groups and
+ locators (Outrigger will set the groups and locators based on the
+ values of the <a
+ href="#initialLookupGroups"><code>initialLookupGroups</code></a> and
+ <a
+ href="#initialLookupLocators"><code>initialLookupLocators</code></a>
+ configurations entries, or based on persisted state set via its
+ implementation of the <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A>
+ interface). Note, if you use the default you should also consult the
+ <A HREF="../../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><code>LookupDiscoveryManager</code> documentation</A> to see what
+ configuration entries it reads. Obtained at service start and
+ restart.
+ </table>
+
+<a name="entryLeasePeriodPolicy"></a>
+<table summary="Describes the entryLeasePeriodPolicy 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>entryLeasePeriodPolicy</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../com/sun/jini/landlord/LeasePeriodPolicy.html" title="interface in com.sun.jini.landlord"><CODE>LeasePeriodPolicy</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> A <code>new </code><A HREF="../../../../com/sun/jini/landlord/FixedLeasePeriodPolicy.html" title="class in com.sun.jini.landlord"><CODE>FixedLeasePeriodPolicy</CODE></A> that allows
+ leases up to <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Long.html#MAX_VALUE" title="class or interface in java.lang"><CODE>Long.MAX_VALUE</CODE></A>, and
+ grants one day leases for duration requests of <A HREF="../../../../net/jini/core/lease/Lease.html#ANY"><CODE>Lease.ANY</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Policy used to determine the length of initial
+ grants and renewals of the leases on entries. Obtained at service
+ start and restart.
+ </table>
+
+<a name="eventLeasePolicy"></a>
+<table summary="Describes the eventLeasePolicy 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>eventLeasePolicy</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../com/sun/jini/landlord/LeasePeriodPolicy.html" title="interface in com.sun.jini.landlord"><CODE>LeasePeriodPolicy</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> A <code>new </code>
+ <A HREF="../../../../com/sun/jini/landlord/FixedLeasePeriodPolicy.html" title="class in com.sun.jini.landlord"><CODE>FixedLeasePeriodPolicy</CODE></A> that
+ allows leases up to one hour, and grants one hour leases
+ for duration requests of <A HREF="../../../../net/jini/core/lease/Lease.html#ANY"><CODE>Lease.ANY</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Policy used to determine the length of initial
+ grants and renewals of the leases on event registrations. Obtained at
+ service start and restart.
+ </table>
+
+<a name="initialLookupAttributes"></a>
+<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> <A HREF="../../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry"><CODE>Entry[]</CODE></A>
+ <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> This configuration entry will be read the <em>first
+ time</em> a given Outrigger instance is started and combined with a
+ default set of attributes. The combined set will be used as the
+ initial set of attributes that Outrigger will use to register with
+ lookup services. Any changes to the set of attributes should be done
+ via Outrigger's admin proxy using the <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A> interface.
+ </table>
+
+<a name="initialLookupGroups"></a>
+<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> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang"><CODE>String[]</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code>new String[]{""}</code> (aka the "public" group)
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> This entry will be read the <em>first time</em> a
+ given Outrigger instance is started to determine the initial set of
+ multicast discovery groups Outrigger should participate in. Any
+ future changes to the set of discovery groups should be made via
+ Outrigger's admin proxy using the <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A>
+ interface.
+ </table>
+
+<a name="initialLookupLocators"></a>
+<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> <A HREF="../../../../net/jini/core/discovery/LookupLocator.html" title="class in net.jini.core.discovery"><CODE>LookupLocator[]</CODE></A>
+ <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> This entry will be read the <em>first time</em> a
+ given Outrigger instance is started to determine the inital set of
+ specific lookup services Outrigger should register with. Any future
+ changes to this set should be made via Outrigger's admin proxy using
+ the <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A> interface.
+ </table>
+
+<a name="iteratorBatchSize"></a>
+<table summary="Describes the iteratorBatchSize 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>iteratorBatchSize</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>100</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Fetch ahead limit for <A HREF="../../../../net/jini/space/JavaSpace05.html#contents(java.util.Collection, net.jini.core.transaction.Transaction, long, long)"><CODE>JavaSpace05.contents</CODE></A> and <A HREF="../../../../net/jini/space/MatchSet.html#next()"><CODE>MatchSet.next</CODE></A> calls. A given
+ <code>contents</code> or <code>next</code> invocation will never
+ fetch more than this many entries. Must be a positive
+ <code>int</code> value. Obtained at service start and restart.
+ </table>
+
+<a name="listenerPreparer"></a>
+<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> An instance of
+ <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A> that
+ does nothing
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Proxy preparer for <A HREF="../../../../net/jini/core/event/RemoteEventListener.html" title="interface in net.jini.core.event"><CODE>RemoteEventListener</CODE></A> proxies passed to <A HREF="../../../../net/jini/space/JavaSpace.html#notify(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, net.jini.core.event.RemoteEventListener, long, java.rmi.MarshalledObject)"><CODE>JavaSpace.notify</CODE></A>. The preparer
+ should expect Outrigger to call the <A HREF="../../../../net/jini/core/event/RemoteEventListener.html#notify(net.jini.core.event.RemoteEvent)"><CODE>notify</CODE></A> method on the
+ returned proxy. The preparer may be asked to prepare proxies for the
+ same remote listener multiple times, though at most once per
+ registration the listener is associated with. <p>
+
+ Only listener proxies that have been returned by this preparer will
+ be persisted. If a listener proxy is recovered it will be re-prepared
+ by the <a href="#recoveredListenerPreparer"><code>
+ recoveredListenerPreparer</code></a>. <p>
+
+ Obtained at service start and restart.
+
+ </table>
+
+<a name="loginContext"></a>
+<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> <code>null</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> If non-<code>null</code>, JAAS login context for
+ performing a JAAS login, after which the service is run as the
+ resulting subject. If <code>null</code>, no JAAS login is
+ performed. Obtained at service start and restart.
+
+ </table>
+
+<a name="lookupLocatorPreparer"></a>
+<table summary="Describes the lookupLocatorPreparer 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>lookupLocatorPreparer</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> An instance of
+ <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A> that
+ does nothing
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Proxy preparer to use for instances of <A HREF="../../../../net/jini/core/discovery/LookupLocator.html" title="class in net.jini.core.discovery"><CODE>LookupLocator</CODE></A> that are passed to various
+ <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A> methods. The preparer should expect
+ Outrigger to call the <A HREF="../../../../net/jini/core/discovery/LookupLocator.html#getRegistrar()"><CODE>LookupLocator.getRegistrar()</CODE></A>,
+ <code>equals</code>, and <code>hashCode</code> methods of the proxy
+ being prepared. The object returned by this preparer must be equal
+ (in the sense of the <code>equals</code> method) to the object passed
+ in. If a <code>LookupLocator</code> instance passed in via the
+ methods of <code>JoinAdmin</code> is persisted, the version returned
+ by this preparer will be the one that is persisted.<p>
+
+ The <code>LookupLocator</code> instances obtained from
+ <a href="#initialLookupLocators"><code>initialLookupLocators</code>
+ </a> will not be prepared by this preparer.<p>
+
+ Obtained at service start and restart.
+ </table>
+
+<a name="maxOps"></a>
+<table summary="Describes the maxOps 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>maxOps</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</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Maximum number of persistent store directives that
+ can be written to a log. Only consulted if <A HREF="../../../../com/sun/jini/outrigger/snaplogstore/LogStore.html" title="class in com.sun.jini.outrigger.snaplogstore"><CODE>com.sun.jini.outrigger.snaplogstore.LogStore</CODE></A> is being used for the <a
+ href="#store">store</a> configuration entry. Outrigger writes
+ directives for the persistent store into logs that are consumed by a
+ consumer thread. This configuration entry represents the maximum
+ number of directives that can be written before a new log is
+ created. Must be a positive <code>int</code> value.
+ Obtained at service start and restart.
+ </table>
+
+<a name="maxServerQueryTimeout"></a>
+<table summary="Describes the maxServerQueryTimeout 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>maxServerQueryTimeout</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> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Long.html#MAX_VALUE" title="class or interface in java.lang"><CODE>Long.MAX_VALUE</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Controls the default value of the <em>maximum
+ server query timeout</em> for proxies created by this server. Must be
+ a positive long value. See <a href="#Blocking Queries"><i>Blocking
+ Queries</i></a> for details on the maximum server query
+ timeout. Note, proxies created by previous incarnations of this
+ server are unaffected by this entry. Obtained at service start and
+ restart.
+ </table>
+
+<a name="maxUnexportDelay"></a>
+<table summary="Describes the maxUnexportDelay 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>maxUnexportDelay</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>120000</code> (2 minutes)
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> How long to retry “nice” unexport attempts before
+ forcing the unexport. Part of destroying an Outrigger server includes
+ calling <A HREF="../../../../net/jini/export/Exporter.html#unexport(boolean)"><CODE>Exporter.unexport(boolean force)</CODE></A> on the <code>Exporter</code> used
+ to export the server (see
+ <a href="#serverExporter"><code>serverExporter</code></a>). The initial
+ <code>unexport</code> call passes <code>false</code> for the value of
+ the <code>force</code> parameter. This is done in order to allow the
+ destroy call to return cleanly to the client. If the initial
+ <code>unexport</code> call fails, Outrigger will retry calling
+ <code>unexport(false)</code> for up to <code>maxUnexportDelay</code>
+ milliseconds before giving up and calling
+ <code>unexport(true)</code>. <code>maxUnexportDelay</code> must be a
+ non-negative long value. If <code>maxUnexportDelay</code> is zero
+ then the very first call to <code>unexport</code> passes
+ <code>true</code> for the value of the <code>force</code> parameter,
+ no nice unexport attempt is made. Obtained at service start and
+ restart. Note, the delay between attempted <code>unexport</code>
+ calls is controlled by the <a
+ href="#unexportRetryDelay"><code>unexportRetryDelay</code></a>
+ configuration entry.
+
+ </table>
+
+
+<a name="notificationsTaskManager"></a>
+<table summary="Describes the notificationsTaskManager 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>notificationsTaskManager</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 </code><A HREF="../../../../com/sun/jini/thread/TaskManager.html#TaskManager()"><CODE>TaskManager()</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> The pool of threads used to make event delivery
+ attempts.
+ The <A HREF="../../../../com/sun/jini/thread/TaskManager.html#terminate()"><CODE>terminate</CODE></A>
+ method of this object will be called when the service is
+ destroyed. 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> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang"><CODE>String</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> none
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> If the <A HREF="../../../../com/sun/jini/outrigger/snaplogstore/LogStore.html" title="class in com.sun.jini.outrigger.snaplogstore"><CODE>com.sun.jini.outrigger.snaplogstore.LogStore</CODE></A> implementations of <A HREF="../../../../com/sun/jini/outrigger/Store.html" title="interface in com.sun.jini.outrigger"><CODE>Store</CODE></A> is being used, the value of this entry
+ is the name of the directory that should be used to persist
+ Outrigger's state. Obtained at persistent service start and restart.
+ </table>
+
+<a name="reapingInterval"></a>
+<table summary="Describes the reapingInterval 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>reapingInterval</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>60000</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> How often, in milliseconds, should Outrigger go
+ through its internal tables and remove unused entries, templates,
+ contents queries, etc. Must be a positive <code>long</code>
+ value. See also the <a
+ href="#reapingPriority"><code>reapingPriority</code></a>
+ configuration entry. Obtained at service start and restart.
+ </table>
+
+
+<a name="reapingPriority"></a>
+<table summary="Describes the reapingPriority 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>reapingPriority</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> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#NORM_PRIORITY" title="class or interface in java.lang"><CODE>Thread.NORM_PRIORITY</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> The priority of the threads that periodically wake
+ up and remove entries, templates, contents queries, etc. from
+ Outrigger's internal tables. Must be a value between <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#MIN_PRIORITY" title="class or interface in java.lang"><CODE>Thread.MIN_PRIORITY</CODE></A> and <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#MAX_PRIORITY" title="class or interface in java.lang"><CODE>Thread.MAX_PRIORITY</CODE></A> inclusive. See
+ also the <a href="#reapingInterval"><code>reapingInterval</code></a>
+ configuration entry. Obtained at service start and restart.
+ </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> An instance of
+ <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A> that
+ does nothing
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Proxy preparer for <A HREF="../../../../net/jini/core/event/RemoteEventListener.html" title="interface in net.jini.core.event"><CODE>RemoteEventListener</CODE></A> proxies that have been
+ persisted and recovered. The preparer should expect Outrigger to call
+ the <A HREF="../../../../net/jini/core/event/RemoteEventListener.html#notify(net.jini.core.event.RemoteEvent)"><CODE>notify</CODE></A>
+ method on the returned proxy. In a given virtual
+ machine for the Java platform (VM) the preparer may be asked
+ to prepare proxies for the same listener multiple times, though at
+ most one successful prepare call will be made per registration the
+ listener is associated with. Only read if Outrigger is being run as a
+ persistent service. See also the <a
+ href="#listenerPreparer"><code>listenerPreparer</code></a>
+ configuration entry. Obtained at persistent service start and
+ restart.<p>
+
+ This preparer needs to perform only those operations whose results
+ are not retained in the serializable state of the listener proxy
+ itself, but need to be performed in the environment in which the
+ proxy is unmarshalled, typically just granting permissions. <p>
+ </table>
+
+<a name="recoveredLookupLocatorPreparer"></a>
+<table summary="Describes the recoveredLookupLocatorPreparer 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>recoveredLookupLocatorPreparer</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> An instance of
+ <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A> that
+ does nothing
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Proxy preparer to use for instances of <A HREF="../../../../net/jini/core/discovery/LookupLocator.html" title="class in net.jini.core.discovery"><CODE>LookupLocator</CODE></A> that have been persisted and
+ recovered. This will include <code>LookupLocator</code>s passed into
+ various <A HREF="../../../../net/jini/admin/JoinAdmin.html" title="interface in net.jini.admin"><CODE>JoinAdmin</CODE></A> methods as well as the
+ initial set of locators obtained from the <a
+ href="#initialLookupLocators"> <code>initialLookupLocators</code></a>
+ configuration entry. The preparer should expect Outrigger to call the
+ <A HREF="../../../../net/jini/core/discovery/LookupLocator.html#getRegistrar()"><CODE>LookupLocator.getRegistrar</CODE></A>, <code>equals</code>, and
+ <code>hashCode</code> methods of the proxy being prepared, and that
+ the returned proxy will be persisted. The object returned by this
+ preparer must be equal (in the sense of the <code>equals</code>
+ method) to the object passed in. Only read if Outrigger is being run
+ as a persistent service. See also the <a
+ href="#lookupLocatorPreparer"><code>lookupLocatorPreparer</code></a>
+ configuration entry. Obtained at persistent service start and
+ restart.
+ <p>
+ This preparer needs to perform only those operations whose results
+ are not retained in the serializable state of the lookup locator
+ itself, but need to be performed in the environment in which the
+ lookup locator is unmarshalled. Typically no operations are
+ needed. <p>
+
+ </table>
+
+<a name="recoveredTransactionManagerPreparer"></a>
+<table summary="Describes the recoveredTransactionManagerPreparer
+ 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>recoveredTransactionManagerPreparer</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> An instance of
+ <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A> that
+ does nothing
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Proxy preparer for <A HREF="../../../../net/jini/core/transaction/server/TransactionManager.html" title="interface in net.jini.core.transaction.server"><CODE>TransactionManager</CODE></A> proxies that
+ have been persisted and recovered. The preparer should expect
+ Outrigger to call the <A HREF="../../../../net/jini/core/transaction/server/TransactionManager.html#getState(long)"><CODE>getState</CODE></A>, <code>equals</code>, and <code>hashCode</code> methods on the
+ returned proxy. In a given VM, the preparer may be asked to prepare
+ proxies for the same <code>TransactionManager</code> multiple times,
+ though at most one successful prepare call will be made per given
+ transaction the manager is involved in. Only read if Outrigger is
+ being run as a persistent service. The object returned by this
+ preparer must be equal (in the sense of the <code>equals</code>
+ method) to the object passed in. See also the <a
+ href="#transactionManagerPreparer">
+ <code>transactionManagerPreparer</code></a> configuration
+ entry. Obtained at persistent service start and restart.
+ <p>
+
+ This preparer needs to perform only those operations whose results
+ are not retained in the serializable state of the transaction manager
+ proxy itself, but need to be performed in the environment in which
+ the proxy is unmarshalled, typically just granting permissions. <p>
+ </table>
+
+
+<a name="serverExporter"></a>
+<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> A new
+ <A HREF="../../../../net/jini/jeri/BasicJeriExporter.html" title="class in net.jini.jeri"><CODE>BasicJeriExporter</CODE></A>
+ with <ul>
+ <li> a <A HREF="../../../../net/jini/jeri/tcp/TcpServerEndpoint.html" title="class in net.jini.jeri.tcp"><CODE>TcpServerEndpoint</CODE></A>
+ created on a random port,
+ <li> a <A HREF="../../../../net/jini/jeri/BasicILFactory.html" title="class in net.jini.jeri"><CODE>BasicILFactory</CODE></A>,
+ <li> distributed garbage collection turned off,
+ <li> keep alive on.
+ </ul>
+ If activatable, the same default will be used
+ but wrapped in an
+ <A HREF="../../../../net/jini/activation/ActivationExporter.html" title="class in net.jini.activation"><CODE>ActivationExporter</CODE></A>
+ and created with the service's <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>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> The exporter used to export the server. The
+ resulting proxy is used as the <em>inner proxy</em> for all of
+ Outrigger's proxies. If the server is activatable, the service's
+ <code>ActivationID</code> will be passed as the <code>data</code>
+ argument, otherwise the <code>data</code> argument will be
+ <code>null</code>. A new exporter is obtained every time Outrigger
+ needs to export itself, currently at service start and restart.
+
+ </table>
+
+<a name="store"></a>
+<table summary="Describes the store 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>store</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <A HREF="../../../../com/sun/jini/outrigger/Store.html" title="interface in com.sun.jini.outrigger"><CODE>Store</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> none
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> The object used to implement Outrigger's persistent
+ store. Only consulted if a persistent version of Outrigger is being
+ started. Obtained at persistent service start and restart.<p>
+
+ A <A HREF="../../../../com/sun/jini/outrigger/snaplogstore/LogStore.html" title="class in com.sun.jini.outrigger.snaplogstore"><CODE>com.sun.jini.outrigger.snaplogstore.LogStore</CODE></A> instance can
+ be created like this:
+ <p>
+
+ <code>new </code><A HREF="../../../../com/sun/jini/outrigger/snaplogstore/LogStore.html#LogStore(net.jini.config.Configuration)"><CODE>com.sun.jini.outrigger.snaplogstore.LogStore(this)</CODE></A>
+ <code> // `this' == the configuration object</code>
+ <p>
+ </table>
+
+<a name="takeMultipleLimit"></a>
+<table summary="Describes the takeMultipleLimit 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>takeMultipleLimit</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>100</code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Maximum number of entries a <A HREF="../../../../net/jini/space/JavaSpace05.html#take(java.util.Collection, net.jini.core.transaction.Transaction, long, long)"><CODE>JavaSpace05.take</CODE></A> call may
+ return. Must be a positive <code>int</code> value. Obtained at
+ service start and restart.
+ </table>
+
+
+<a name="transactionManagerPreparer"></a>
+<table summary="Describes the transactionManagerPreparer 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>transactionManagerPreparer</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> An instance of
+ <A HREF="../../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><CODE>BasicProxyPreparer</CODE></A> that
+ does nothing
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> Proxy preparer for <A HREF="../../../../net/jini/core/transaction/server/TransactionManager.html" title="interface in net.jini.core.transaction.server"><CODE>TransactionManager</CODE></A> proxies
+ managing transactions Outrigger is participating in. The preparer
+ should expect Outrigger to call the <A HREF="../../../../net/jini/core/transaction/server/TransactionManager.html#join(long, net.jini.core.transaction.server.TransactionParticipant, long)"><CODE>join</CODE></A>,
+ <A HREF="../../../../net/jini/core/transaction/server/TransactionManager.html#getState(long)"><CODE>getState</CODE></A>, <code>equals</code>, and <code>hashCode</code> methods on the
+ returned proxy. The preparer may be asked to prepare proxies for the
+ same <code>TransactionManager</code> multiple times. Outrigger
+ attempts to minimize the number of times the
+ <code>TransactionManager</code> associated with a given transaction
+ is prepared; that is, if a given transaction is passed to multiple
+ operations on the space, in most cases the proxy for the associated
+ <code>TransactionManager</code> will only be prepared once. However,
+ it will be prepared again if it is used in a different
+ transaction. The object returned by this preparer must be equal (in
+ the sense of the <code>equals</code> method) to the object passed
+ in.<p>
+
+ Only <code>TransactionManager</code> proxies that have been returned
+ by this preparer will be persisted. If a
+ <code>TransactionManager</code> proxy is recovered it will be
+ re-prepared by the <a
+ href="#recoveredTransactionManagerPreparer"><code>
+ recoveredTransactionManagerPreparer</code></a>.<p>
+
+ Obtained at service start and restart.
+ </table>
+
+<a name="txnMonitorTaskManager"></a>
+<table summary="Describes the txnMonitorTaskManager 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>txnMonitorTaskManager</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 </code><A HREF="../../../../com/sun/jini/thread/TaskManager.html#TaskManager()"><CODE>TaskManager()</CODE></A>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> The pool of threads used to check the status
+ of transactions that have been prepared or have locked contended
+ resources.
+ The <A HREF="../../../../com/sun/jini/thread/TaskManager.html#terminate()"><CODE>terminate</CODE></A>
+ method of this object will be called when the service is
+ destroyed. Obtained at service start and restart.
+ </table>
+
+<a name="unexportRetryDelay"></a>
+<table summary="Describes the unexportRetryDelay 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>unexportRetryDelay</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</code> (1 second)
+ <tr valign="top"> <td>   <th scope="row" align="right">
+
+ Description: <td> When destroying an Outrigger server how long to
+ wait between unexport attempts. <code>unexportRetryDelay</code> must
+ be a positive long value. When destroying itself Outrigger will sleep
+ for <code>unexportRetryDelay</code> milliseconds between <A HREF="../../../../net/jini/export/Exporter.html#unexport(boolean)"><CODE>Exporter.unexport</CODE></A> calls. Obtained
+ at service start and restart. See <a
+ href="#maxUnexportDelay"><code>maxUnexportDelay</code></a> for
+ additional details.
+ </table>
+
+<!--
+<a name=""></a>
+<table summary="Describes the firstEntryName 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>firstEntryName</code></font>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Type: <td> <code><i>firstTypeName</i></code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Default: <td> <code><i>firstDefaultValue</i></code>
+ <tr valign="top"> <td>   <th scope="row" align="right">
+ Description: <td> <i>This is the first description.</i>
+ </table>
+-->
+
+<H3>Other Configuration Entries</H3>
+
+Outrigger uses <A HREF="../../../../net/jini/lookup/JoinManager.html" title="class in net.jini.lookup"><CODE>JoinManager</CODE></A> to manage its lookup
+service registrations, passing in the configuration, the <A HREF="../../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><CODE>DiscoveryManagement</CODE></A> object obtained from the <a
+href="#discoveryManager"><code>discoveryManager</code></a> configuration
+entry, and <code>null</code> for the <A HREF="../../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease"><CODE>LeaseRenewalManager</CODE></A>. The <A HREF="../../../../net/jini/lookup/JoinManager.html" title="class in net.jini.lookup"><code>JoinManager</code> documentation</A> should be consulted to see what
+configuration entries <code>JoinManager</code> reads.
+
+<a name="Blocking Queries">
+<H2>Blocking Queries</H2>
+</a>
+
+Outrigger implements blocking queries (<A HREF="../../../../net/jini/space/JavaSpace.html#read(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)"><CODE>read</CODE></A>, <A HREF="../../../../net/jini/space/JavaSpace.html#take(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)"><CODE>take</CODE></A>, <A HREF="../../../../net/jini/space/JavaSpace05.html#take(java.util.Collection, net.jini.core.transaction.Transaction, long, long)"><CODE>take</CODE></A>, <A HREF="../../../../net/jini/space/JavaSpace.html#readIfExists(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)"><CODE>readIfExists</CODE></A>, and <A HREF="../../../../net/jini/space/JavaSpace.html#takeIfExists(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)"><CODE>takeIfExists</CODE></A> calls with non-zero
+timeouts that cannot be immediately resolved) by having the remote call
+block in the server until the query can be resolved or the timeout
+expires. This means the remote call could run up to the timeout provided by
+the client. While this works well in many cases, some transports only
+support relatively short remote call durations. In such cases, calls that
+block in the server for a long time may fail with a remote exception.
+Outrigger's <em>maximum server query timeout</em> facility can be used to
+limit the duration of any one remote call while still allowing for the
+client to submit blocking queries with very long timeouts. This allows an
+Outrigger deployment to accommodate clients that want to use long timeouts
+with blocking queries while using transports that cannot support remote
+calls that block for an unbounded period of time.<p>
+
+When Outrigger's proxy handles a query with a non-zero <em>client
+timeout</em>, it passes a non-zero <em>server timeout</em> to the
+server. If the server timeout elapses, the server returns even if the query
+has not been resolved. Normally the proxy just passes the client timeout as
+the server timeout. However, each proxy has a <em>maximum server query
+timeout</em> value that is used to bound the server timeout. If the maximum
+server query timeout is less than the client timeout, the maximum server
+query timeout will be passed for the server timeout. If a call to the
+server returns without resolving the query, the proxy will re-submit the
+query using the smaller of the maximum server query timeout and the
+remainder of the client timeout as the server timeout. By setting the
+maximum server query timeout to be shorter than the longest remote call the
+transport will support, the client can use very long client
+timeouts while avoiding remote exceptions that result from the transport's
+inability to support long remote calls.<p>
+
+When Outrigger creates a proxy it provides a default value for the maximum
+server query timeout. This default is controlled by the <a
+href="#maxServerQueryTimeout"><code>maxServerQueryTimeout</code></a>
+configuration entry. This value can be overridden in the client by setting
+the <code>com.sun.jini.outrigger.maxServerQueryTimeout</code> property to a
+positive <code>long</code> value.<p>
+
+Note, the maximum server query timeout only controls how long the server
+will wait for resolution of a blocking query before returning to the proxy,
+it does not affect how long the proxy will wait if there is a problem with
+the network. If the Java RMI implementation being used allows one to limit
+the total time a remote call is allowed to block, the maximum server
+query timeout provides a way to make sure that the proxy will avoid making
+calls that will last longer than that limit.<p>
+
+<a name="access_control">
+<H2>Access Control Permission Targets</H2>
+</a>
+
+The following table lists the remote methods on Outrigger's proxy objects and
+the associated target names for enforcing access control using <A HREF="../../../../com/sun/jini/outrigger/OutriggerPermission.html" title="class in com.sun.jini.outrigger"><CODE>OutriggerPermission</CODE></A>: <p>
+
+<table border="1" cellpadding="5"
+ summary="The proxy methods and associated target names for
+ OutriggerPermission.">
+
+<tr> <th> Proxy Method <th> Target Name
+
+<!-- JavaSpace -->
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace.html#write(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)"><CODE>JavaSpace.write</CODE></A>
+ <td> <code>write</code>
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace.html#take(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)"><CODE>JavaSpace.take</CODE></A>
+ <td> <code>take</code>
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace.html#read(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)"><CODE>JavaSpace.read</CODE></A>
+ <td> <code>read</code>
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace.html#takeIfExists(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)"><CODE>JavaSpace.takeIfExists</CODE></A>
+ <td> <code>takeIfExists</code>
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace.html#readIfExists(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, long)"><CODE>JavaSpace.readIfExists</CODE></A>
+ <td> <code>readIfExists</code>
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace.html#notify(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, net.jini.core.event.RemoteEventListener, long, java.rmi.MarshalledObject)"><CODE>JavaSpace.notify</CODE></A>
+ <td> <code>notify</code>
+
+<!-- JavaSpace05 -->
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace05.html#write(java.util.List, net.jini.core.transaction.Transaction, java.util.List)"><CODE>JavaSpace05.write</CODE></A>
+ <td> <code>write</code>
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace05.html#take(java.util.Collection, net.jini.core.transaction.Transaction, long, long)"><CODE>JavaSpace05.take</CODE></A>
+ <td> <code>take</code>
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace05.html#contents(java.util.Collection, net.jini.core.transaction.Transaction, long, long)"><CODE>JavaSpace05.contents</CODE></A>
+ <td> <code>contents</code>
+
+<tr> <td> <A HREF="../../../../net/jini/space/JavaSpace05.html#registerForAvailabilityEvent(java.util.Collection, net.jini.core.transaction.Transaction, boolean, net.jini.core.event.RemoteEventListener, long, java.rmi.MarshalledObject)"><CODE>JavaSpace05.registerForAvailabilityEvent</CODE></A>
+ <td> <code>registerForAvailabilityEvent</code>
+
+<!-- MatchSet -->
+
+<tr> <td> <A HREF="../../../../net/jini/space/MatchSet.html#next()"><CODE>MatchSet.next</CODE></A>
+ <td> <code>nextBatch</code>
+
+
+<!-- TransactionParticipant -->
+
+<tr> <td> <A HREF="../../../../net/jini/core/transaction/server/TransactionParticipant.html#prepare(net.jini.core.transaction.server.TransactionManager, long)"><CODE>TransactionParticipant.prepare</CODE></A>
+ <td> <code>prepare</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/transaction/server/TransactionParticipant.html#commit(net.jini.core.transaction.server.TransactionManager, long)"><CODE>TransactionParticipant.commit</CODE></A>
+ <td> <code>commit</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/transaction/server/TransactionParticipant.html#abort(net.jini.core.transaction.server.TransactionManager, long)"><CODE>TransactionParticipant.abort</CODE></A>
+ <td> <code>abort</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/transaction/server/TransactionParticipant.html#prepareAndCommit(net.jini.core.transaction.server.TransactionManager, long)"><CODE>TransactionParticipant.prepareAndCommit</CODE></A>
+ <td> <code>prepareAndCommit</code>
+
+<!-- Lease and LeaseMap -->
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/Lease.html#renew(long)"><CODE>Lease.renew</CODE></A>
+ <td> <code>renew</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/Lease.html#cancel()"><CODE>Lease.cancel</CODE></A>
+ <td> <code>cancel</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/LeaseMap.html#renewAll()"><CODE>LeaseMap.renewAll</CODE></A>
+ <td> <code>renewAll</code>
+
+<tr> <td> <A HREF="../../../../net/jini/core/lease/LeaseMap.html#cancelAll()"><CODE>LeaseMap.cancelAll</CODE></A>
+ <td> <code>cancelAll</code>
+
+<!-- Administrable -->
+
+<tr> <td> <A HREF="../../../../net/jini/admin/Administrable.html#getAdmin()"><CODE>Administrable.getAdmin</CODE></A>
+ <td> <code>getAdmin</code>
+
+<!-- JoinAdmin -->
+
+<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#addLookupAttributes(net.jini.core.entry.Entry[])"><CODE>JoinAdmin.addLookupAttributes</CODE></A>
+ <td> <code>addLookupAttributes</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#getLookupGroups()"><CODE>JoinAdmin.getLookupGroups</CODE></A>
+ <td> <code>getLookupGroups</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#removeLookupGroups(java.lang.String[])"><CODE>JoinAdmin.removeLookupGroups</CODE></A>
+ <td> <code>removeLookupGroups</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#getLookupLocators()"><CODE>JoinAdmin.getLookupLocators</CODE></A>
+ <td> <code>getLookupLocators</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#removeLookupLocators(net.jini.core.discovery.LookupLocator[])"><CODE>JoinAdmin.removeLookupLocators</CODE></A>
+ <td> <code>removeLookupLocators</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>
+
+<!-- ServiceProxyAccessor -->
+
+<tr> <td> <A HREF="../../../../com/sun/jini/start/ServiceProxyAccessor.html#getServiceProxy()"><CODE>ServiceProxyAccessor.getServiceProxy</CODE></A>
+ <td> <code>getServiceProxy</code>
+
+<!-- (Constrainable)JavaSpaceAdmin -->
+
+<tr> <td> <A HREF="../../../../com/sun/jini/outrigger/JavaSpaceAdmin.html#space()"><CODE>JavaSpaceAdmin.space</CODE></A>
+ <td> <code>space</code>
+
+<tr> <td> <A HREF="../../../../com/sun/jini/outrigger/JavaSpaceAdmin.html#contents(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction)"><CODE>JavaSpaceAdmin.contents(Entry, Transaction)</CODE></A>,<br>
+ <A HREF="../../../../com/sun/jini/outrigger/JavaSpaceAdmin.html#contents(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, int)"><CODE>JavaSpaceAdmin.contents(Entry, Transaction, int)</CODE></A>,<br>
+ <A HREF="../../../../com/sun/jini/outrigger/ConstrainableJavaSpaceAdmin.html#contents(net.jini.core.entry.Entry, net.jini.core.transaction.Transaction, int, net.jini.core.constraint.MethodConstraints)"><CODE>ConstrainableJavaSpaceAdmin.contents(Entry, Transaction, int,
+ MethodConstraints)</CODE></A>
+
+ <td> <code>contents</code>
+
+<!-- AdminIterator -->
+
+<tr> <td> <A HREF="../../../../com/sun/jini/outrigger/AdminIterator.html#next()"><CODE>AdminIterator.next</CODE></A>
+ <td> <code>next</code>
+
+<tr> <td> <A HREF="../../../../com/sun/jini/outrigger/AdminIterator.html#delete()"><CODE>AdminIterator.delete</CODE></A>
+ <td> <code>delete</code>
+
+<tr> <td> <A HREF="../../../../com/sun/jini/outrigger/AdminIterator.html#close()"><CODE>AdminIterator.close</CODE></A>
+ <td> <code>close</code>
+
+</table>
+
+<a name="logging">
+<h2>Logging</h2>
+</a>
+
+The Outrigger service implementation uses a number of different <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> objects: <p>
+
+ <table border="1" cellpadding="5"
+ summary="Describes the various logger names Outrigger uses">
+
+ <tr> <td> <b>Logger Name</b> <td> <b>Description</b>
+
+ <tr> <td> <code>com.sun.jini.outrigger.lifecycle</code>
+ <td> Starting/restarting/destroying the service
+
+ <tr> <td> <code>com.sun.jini.outrigger.operations</code>
+ <td> Top level space operations
+
+ <tr> <td> <code>com.sun.jini.outrigger.transactions</code>
+ <td> Transactions
+
+ <tr> <td> <code>com.sun.jini.outrigger.leases</code>
+ <td> Leases and leasing
+
+ <tr> <td> <code>com.sun.jini.outrigger.iterator</code>
+ <td> Iterators
+
+ <tr> <td> <code>com.sun.jini.outrigger.join</code>
+ <td> Outrigger's join state
+
+ <tr> <td> <code>com.sun.jini.outrigger.entryMatching</code>
+ <td> Entry matching
+
+ <tr> <td> <code>com.sun.jini.outrigger.event</code>
+ <td> Events and event delivery
+
+ <tr> <td> <code>com.sun.jini.outrigger.store</code>
+ <td> Persistence
+
+ <tr> <td> <code>com.sun.jini.outrigger.proxy</code>
+ <td> The operation of Outrigger's proxies
+ </table><p>
+
+Each of these loggers logs information at the following logging levels: <p>
+
+ <table border="1" cellpadding="5"
+ summary="Describes logging performed by Outrigger at different
+ logging levels">
+
+ <tr> <th> Level <th> Description
+
+ <tr> <td> SEVERE
+ <td> Problems which prevent startup or cause shutdown of Outrigger,
+ or which generally prevent Outrigger from continuing with its
+ processing
+
+ <tr> <td> WARNING
+ <td> Problems that allow Outrigger to continue with its processing,
+ but in a "crippled" state that might be serious enough to affect
+ other operations in the system
+
+ <tr> <td> INFO <td>
+ Serious, unexpected "problems" that occur during processing that the
+ user/deployer/administrator needs to know about, but which does not
+ necessarily indicate problems with other operations in the system.
+ Also top level life-cycle messages
+
+ <tr> <td> CONFIG <td>
+ Trace information related to the configuration and administration
+ of Outrigger
+
+ <tr> <td> FAILED <td>
+ Serious, unexpected "problems" encountered by Outrigger that
+ the user/deployer/administrator needs to know about, which
+ Outrigger propagates to its caller, and which may ultimately be
+ logged by some other component at a higher level (such as INFO).
+ Also error conditions in independent threads that are probably
+ transient in nature
+
+ <tr> <td> FINE <td>
+ Information related to tracing Outrigger at a high level,
+ which might provide a logical view of the operations being
+ performed.
+
+ <tr> <td> FINER <td>
+ Information related to tracing Outrigger at a lower level,
+ with more detail than that provided at the FINE level; for
+ example, tracing method entry and exit.
+
+ <tr> <td> FINEST <td>
+ Information related to Outrigger's internal state that
+ might be useful in debugging or testing
+ </table> <p>
+
+<p>
+
+<a name="examples">
+<H2>Examples for Running Outrigger</H2>
+</a>
+
+This section provides examples of running Outrigger in various configurations.
+
+<ul>
+<li> <a href="#assumptions">Assumptions for running the examples</a>
+<li> JRMP configurations
+ <ul>
+ <li> <a href="#transient_jrmp">Transient</a>
+ <li> <a href="#activatable_jrmp">Activatable</a>
+ </ul>
+<li> 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>
+
+No example is included for a non-activatable, persistent JRMP configuration
+because this is <a href="#persistent_jrmp">unlikely to have the expected
+result</a>.
+
+<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 lookup group name is <var><b>your.group</b></var>
+<li> The HTTP server for download JAR files is running on
+ the local host 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
+ client and service configurations that enforce security.
+<li> For activatable services, an activation system is running on
+ your machine. 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 examples, items in <var><b>bold</b></var> need to be
+customized for your local environment.
+
+<a name="transient_jrmp">
+<h3>Starting Transient Outrigger using JRMP</h3>
+</a>
+
+This configuration starts a transient Outrigger server that will use JRMP
+(the basic Java RMI implementation included with the JDK) to communicate
+between proxies and the server. Only a single VM will be involved (which
+will be started by the command shown below). The Outrigger server will
+reside in this VM. When this VM exits, the server, the space it is hosting,
+and all entries in the space will be gone. This (or a similar <a
+href="#transient">configuration that uses Jini ERI</a>) is a good choice when
+you are just starting with spaces or when doing development since it has
+low overhead, is simpler to get running, and is simpler to stop. It may or
+may not be a good choice for a production deployment depending on the
+application's requirements.<p>
+
+<blockquote>
+<pre>
+java -Djava.security.policy=<a href="#outrigger_all_policy"><var><b>config_dir</b></var>/outrigger-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-outrigger.config</a>
+</pre>
+</blockquote> <p>
+
+This configuration uses the following files.
+
+<a name="outrigger_all_policy">
+<h4>File <var><b>config_dir</b></var>/outrigger-all.policy</h4>
+</a>
+
+For simplicity the examples all use this security policy file for starting
+and running all Outrigger configurations. It would be possible to create
+more targeted files in some cases. A policy file like this should prevent
+Outrigger from being used to compromise the host it is being run on or
+other hosts on the network while requiring minimal tweaking. It will not
+prevent unauthorized access to the space, nor will it prevent denial of
+service attacks against the space. Controlling access to the space and/or
+preventing denial of service attacks will require a secure configuration.
+See the <a
+href="../../../../../../source/src/com/sun/jini/example/hello/index.html">hello
+example</a> for some client and service configurations that enforce
+security.<p>
+
+<blockquote>
+<pre>
+grant codebase "file:<var><b>install_dir</b></var>/lib/jsk-platform.jar" {
+ permission java.security.AllPermission;
+};
+
+grant codebase "file:<var><b>install_dir</b></var>/lib/jsk-lib.jar" {
+ permission java.security.AllPermission;
+};
+
+grant codebase "file:<var><b>install_dir</b></var>/lib/start.jar" {
+ permission java.security.AllPermission;
+};
+
+grant codebase "file:<var><b>install_dir</b></var>/lib/destroy.jar" {
+ permission java.security.AllPermission;
+};
+
+grant codebase "file:<var><b>install_dir</b></var>/lib/sharedvm.jar" {
+ permission java.security.AllPermission;
+};
+
+grant codebase "file:<var><b>install_dir</b></var>/lib/group.jar" {
+ permission java.security.AllPermission;
+};
+
+grant codebase "file:<var><b>install_dir</b></var>/lib/outrigger.jar" {
+ permission java.security.AllPermission;
+};
+
+grant codebase "file:<var><b>install_dir</b></var>/lib/outrigger-snaplogstore.jar" {
+ permission java.security.AllPermission;
+};
+
+grant codebase "file:<var><b>install_dir</b></var>/lib/phoenix-group.jar" {
+ permission java.security.AllPermission;
+};
+
+grant codebase "file:<var><b>install_dir</b></var>/lib/phoenix-init.jar" {
+ permission java.security.AllPermission;
+};
+</pre>
+</blockquote>
+
+<a name="start_transient_jrmp_config">
+<h4>File <var><b>config_dir</b></var>/start-transient-jrmp-outrigger.config</h4>
+</a>
+
+Use this configuration source file to start transient Outrigger using
+JRMP. <p>
+
+<blockquote>
+<pre>
+import com.sun.jini.start.NonActivatableServiceDescriptor;
+import com.sun.jini.start.ServiceDescriptor;
+import com.sun.jini.config.ConfigUtil;
+
+com.sun.jini.start {
+ private static basecodebase = "http://" + ConfigUtil.getHostName() +
[... 632 lines stripped ...]