blob: 101ce24909346555ff5e5a41e68ffa32ca7a9a8d [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0) on Sun Aug 28 20:42:11 EST 2016 -->
<title>JoinManager (Apache River v3.0.0 API Documentation (internals))</title>
<meta name="date" content="2016-08-28">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="JoinManager (Apache River v3.0.0 API Documentation (internals))";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":9,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/JoinManager.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../net/jini/lookup/DiscoveryAdmin.html" title="interface in net.jini.lookup"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../net/jini/lookup/JoinManager.AddAttributesTask.html" title="class in net.jini.lookup"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?net/jini/lookup/JoinManager.html" target="_top">Frames</a></li>
<li><a href="JoinManager.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">net.jini.lookup</div>
<h2 title="Class JoinManager" class="title">Class JoinManager</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>net.jini.lookup.JoinManager</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">JoinManager</span>
extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">A goal of any well-behaved service is to advertise the facilities and
functions it provides by requesting residency within at least one lookup
service. Making such a request of a lookup service is known as registering
with, or <i>joining</i>, a lookup service. To demonstrate this good
behavior, a service must comply with both the multicast discovery protocol
and the unicast discovery protocol in order to discover the lookup services
it is interested in joining. The service must also comply with the join
protocol to register with the desired lookup services.
<p>
In order for a service to maintain its residency in the lookup services
it has joined, the service must provide for the coordination, systematic
renewal, and overall management of all leases on that residency. In
addition to handling all discovery and join duties, as well as managing
all leases on lookup service residency, the service must also provide
for the coordination and management of any attribute sets with which
it may have registered with the lookup services in which it resides.
<p>
This class performs all of the functions related to discovery, joining,
service lease renewal, and attribute management which is required of a
well-behaved service. Each of these activities is intimately involved
with the maintenance of a service's residency in one or more lookup
services (the service's join state), thus the name <code>JoinManager</code>.
<p>
This class should be employed by services, not clients. The use of this
class in a wide variety of services can help minimize the work resulting
from having to repeatedly implement this required functionality in each
service. Note that this class is not remote. Services that wish to use
this class will create an instance of this class in the service's address
space to manage the entity's join state locally.</div>
<dl>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Sun Microsystems, Inc.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><code>DiscoveryManagement</code></a>,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease"><code>LeaseRenewalManager</code></a>,
<a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html?is-external=true" title="class or interface in java.util.logging"><code>Level</code></a>,
<a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Logger.html?is-external=true" title="class or interface in java.util.logging"><code>Logger</code></a></dd>
<dt><span class="simpleTagLabel">Implementation Specifics:</span></dt>
<dd><!-- Implementation Specifics -->
The following implementation-specific items are discussed below:
<ul><li> <a href="#jmConfigEntries">Configuring JoinManager</a>
<li> <a href="#jmLogging">Logging</a>
</ul>
<a name="jmConfigEntries">
<p>
<b><font size="+1">Configuring JoinManager</font></b>
<p>
</a>
This implementation of <code>JoinManager</code> supports the following
configuration entries; where each configuration entry name is associated
with the component name <code>net.jini.lookup.JoinManager</code>. Note
that the configuration entries specified here are specific to this
implementation of <code>JoinManager</code>. Unless otherwise stated, each
entry is retrieved from the configuration only once per instance of
this utility, where each such retrieval is performed in the constructor.
<a name="discoveryManager">
<table summary="Describes the discoveryManager configuration entry"
border="0" cellpadding="2">
<tr valign="top">
<th scope="col" summary="layout"> <font size="+1">&#X2022;</font>
<th scope="col" align="left" colspan="2"> <font size="+1">
<code>discoveryManager</code></font>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Type: <td> <a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><code>DiscoveryManagement</code></a>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Default: <td> <code> new
<a href="../../../net/jini/discovery/LookupDiscoveryManager.html#LookupDiscoveryManager-java.lang.String:A-net.jini.core.discovery.LookupLocator:A-net.jini.discovery.DiscoveryListener-net.jini.config.Configuration-"><code>LookupDiscoveryManager</code></a>(
new java.lang.String[] {""},
new <a href="../../../net/jini/core/discovery/LookupLocator.html" title="class in net.jini.core.discovery"><code>LookupLocator</code></a>[0],
null, config)</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Description:
<td> The object used to manage the discovery processing
performed by this utility. This entry will be retrieved
from the configuration only if no discovery manager is
specified in the constructor. Note that this object should
not be shared with other components in the application that
employs this utility.
</table>
</a>
<a name="leaseManager">
<table summary="Describes the leaseManager configuration entry"
border="0" cellpadding="2">
<tr valign="top">
<th scope="col" summary="layout"> <font size="+1">&#X2022;</font>
<th scope="col" align="left" colspan="2"> <font size="+1">
<code>leaseManager</code></font>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Type: <td> <a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease"><code>LeaseRenewalManager</code></a>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Default: <td> <code> new
<a href="../../../net/jini/lease/LeaseRenewalManager.html#LeaseRenewalManager-net.jini.config.Configuration-"><code>LeaseRenewalManager</code></a>(config)</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Description:
<td> The object used to manage each service lease returned
to this utility when the service is registered with the
the various discovered lookup services. This entry will
be retrieved from the configuration only if no lease
renewal manager is specified in the constructor.
</table>
</a>
<a name="maxLeaseDuration">
<table summary="Describes the maxLeaseDuration
configuration entry" border="0" cellpadding="2">
<tr valign="top">
<th scope="col" summary="layout"> <font size="+1">&#X2022;</font>
<th scope="col" align="left" colspan="2"> <font size="+1">
<code>maxLeaseDuration</code></font>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Type: <td> <code>long</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Default: <td> <code>Lease.FOREVER</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Description:
<td> The maximum lease duration (in milliseconds) that is requested
from each discovered lookup service on behalf of the service;
both when the lease is initially requested, as well as when
renewal of that lease is requested. Note that as this value is
made smaller, renewal requests will be made more frequently
while the service is up, and lease expiration will occur sooner
when the service goes down.
</table>
</a>
<a name="registrarPreparer">
<table summary="Describes the registrarPreparer configuration entry"
border="0" cellpadding="2">
<tr valign="top">
<th scope="col" summary="layout"> <font size="+1">&#X2022;</font>
<th scope="col" align="left" colspan="2"> <font size="+1">
<code>registrarPreparer</code></font>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Type: <td> <a href="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><code>ProxyPreparer</code></a>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Default: <td> <code>new <a href="../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><code>BasicProxyPreparer</code></a>()
</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Description:
<td> Preparer for the proxies to the lookup services that are
discovered and used by this utility.
<p>
The following methods of the proxy returned by this preparer are
invoked by this utility:
<ul>
<li><a href="../../../net/jini/core/lookup/ServiceRegistrar.html#register-net.jini.core.lookup.ServiceItem-long-"><code>register</code></a>
</ul>
</table>
</a>
<a name="registrationPreparer">
<table summary="Describes the registrationPreparer configuration entry"
border="0" cellpadding="2">
<tr valign="top">
<th scope="col" summary="layout"> <font size="+1">&#X2022;</font>
<th scope="col" align="left" colspan="2"> <font size="+1">
<code>registrationPreparer</code></font>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Type: <td> <a href="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><code>ProxyPreparer</code></a>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Default: <td> <code>new <a href="../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><code>BasicProxyPreparer</code></a>()
</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Description:
<td> Preparer for the proxies to the registrations returned to
this utility upon registering the service with each discovered
lookup service.
<p>
The following methods of the proxy returned by this preparer are
invoked by this utility:
<ul>
<li><a href="../../../net/jini/core/lookup/ServiceRegistration.html#getServiceID--"><code>getServiceID</code></a>
<li><a href="../../../net/jini/core/lookup/ServiceRegistration.html#getLease--"><code>getLease</code></a>
<li><a href="../../../net/jini/core/lookup/ServiceRegistration.html#addAttributes-net.jini.core.entry.Entry:A-"><code>addAttributes</code></a>
<li><a href="../../../net/jini/core/lookup/ServiceRegistration.html#modifyAttributes-net.jini.core.entry.Entry:A-net.jini.core.entry.Entry:A-"><code>modifyAttributes</code></a>
<li><a href="../../../net/jini/core/lookup/ServiceRegistration.html#setAttributes-net.jini.core.entry.Entry:A-"><code>setAttributes</code></a>
</ul>
</table>
</a>
<a name="serviceLeasePreparer">
<table summary="Describes the serviceLeasePreparer configuration entry"
border="0" cellpadding="2">
<tr valign="top">
<th scope="col" summary="layout"> <font size="+1">&#X2022;</font>
<th scope="col" align="left" colspan="2"> <font size="+1">
<code>serviceLeasePreparer</code></font>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Type: <td> <a href="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security"><code>ProxyPreparer</code></a>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Default: <td> <code>new <a href="../../../net/jini/security/BasicProxyPreparer.html" title="class in net.jini.security"><code>BasicProxyPreparer</code></a>()
</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Description:
<td> Preparer for the leases returned to this utility through
the registrations with each discovered lookup service with
which this utility has registered the service.
<p>
Currently, none of the methods on the service lease returned
by this preparer are invoked by this implementation of the utility.
</table>
</a>
<a name="executorService">
<table summary="Describes the executorService configuration entry"
border="0" cellpadding="2">
<tr valign="top">
<th scope="col" summary="layout"> <font size="+1">&#X2022;</font>
<th scope="col" align="left" colspan="2"> <font size="+1">
<code>executorService</code></font>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Type: <td> <a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util"><code>ExecutorService</code></a>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Default: <td> <code>new
<a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util"><code>ThreadPoolExecutor</code></a>(
15,
15,
15,
TimeUnit.SECONDS,
new <a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/LinkedBlockingQueue.html?is-external=true" title="class or interface in java.util"><code>LinkedBlockingQueue</code></a>(),
new <code>NamedThreadFactory</code>("JoinManager executor thread", false))</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Description:
<td> The object that pools and manages the various threads
executed by this utility. This object
should not be shared with other components in the
application that employs this utility.
</table>
</a>
<a name="wakeupManager">
<table summary="Describes the wakeupManager configuration entry"
border="0" cellpadding="2">
<tr valign="top">
<th scope="col" summary="layout"> <font size="+1">&#X2022;</font>
<th scope="col" align="left" colspan="2"> <font size="+1">
<code>wakeupManager</code></font>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Type: <td> <a href="../../../org/apache/river/thread/WakeupManager.html" title="class in org.apache.river.thread"><code>WakeupManager</code></a>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Default: <td> <code>new
<a href="../../../org/apache/river/thread/WakeupManager.html#WakeupManager-org.apache.river.thread.WakeupManager.ThreadDesc-"><code>WakeupManager</code></a>(new
<a href="../../../org/apache/river/thread/WakeupManager.ThreadDesc.html" title="class in org.apache.river.thread"><code>WakeupManager.ThreadDesc</code></a>(null,true))</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Description:
<td> Object that pools and manages the various tasks that are
initially executed by the object corresponding to the
<a href="#executorService"><code>executorService</code></a> entry
of this component, but which fail during that initial execution.
This object schedules the re-execution of such a failed task -
in the <a href="#executorService"><code>executorService</code></a>
object - at various times in the future, until either the
task succeeds or the task has been executed the maximum
number of allowable times, corresponding to the
<a href="#wakeupRetries"><code>wakeupRetries</code></a>
entry of this component. This object should not be shared
with other components in the application that employs this
utility.
</table>
</a>
<a name="wakeupRetries">
<table summary="Describes the wakeupRetries
configuration entry" border="0" cellpadding="2">
<tr valign="top">
<th scope="col" summary="layout"> <font size="+1">&#X2022;</font>
<th scope="col" align="left" colspan="2"> <font size="+1">
<code>wakeupRetries</code></font>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Type: <td> <code>int</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Default: <td> <code>6</code>
<tr valign="top"> <td> &nbsp <th scope="row" align="right">
Description:
<td> The maximum number of times a failed task is allowed to
be executed by the object corresponding to the
<a href="#wakeupManager"><code>wakeupManager</code></a>
entry of this component.
</table>
</a>
<a name="jmLogging">
<p>
<b><font size="+1">Logging</font></b>
<p>
</a>
This implementation of <code>JoinManager</code> uses the
<a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Logger.html?is-external=true" title="class or interface in java.util.logging"><code>Logger</code></a> named <code>net.jini.lookup.JoinManager</code>
to log information at the following logging levels: <p>
<table border="1" cellpadding="5"
summary="Describes the information logged by JoinManager,
and the levels at which that information is logged">
<caption halign="center" valign="top">
<b><code>net.jini.lookup.JoinManager</code></b>
</caption>
<tr> <th scope="col"> Level</th>
<th scope="col"> Description</th>
</tr>
<tr>
<td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html?is-external=true#INFO" title="class or interface in java.util.logging"><code>INFO</code></a></td>
<td>when a task is stopped because of a definite exception</td>
</tr>
<tr>
<td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html?is-external=true#INFO" title="class or interface in java.util.logging"><code>INFO</code></a></td>
<td>
when a task is stopped because it has exceeded the maximum number of
times the task is allowed to be tried/re-tried
</td>
</tr>
<tr>
<td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html?is-external=true#INFO" title="class or interface in java.util.logging"><code>INFO</code></a></td>
<td>when any exception occurs while attempting to prepare a proxy</td>
</tr>
<tr>
<td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html?is-external=true#FINER" title="class or interface in java.util.logging"><code>FINER</code></a></td>
<td>
when any exception (other than the more serious exceptions logged
at higher levels) occurs in a task
</td>
</tr>
<tr>
<td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html?is-external=true#FINEST" title="class or interface in java.util.logging"><code>FINEST</code></a></td>
<td>
when an <code>IllegalStateException</code> occurs upon attempting to
discard a lookup service
</td>
</tr>
<tr>
<td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html?is-external=true#FINEST" title="class or interface in java.util.logging"><code>FINEST</code></a></td>
<td>whenever any task is started</td>
</tr>
<tr>
<td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html?is-external=true#FINEST" title="class or interface in java.util.logging"><code>FINEST</code></a></td>
<td>whenever any task completes successfully</td>
</tr>
<tr>
<td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html?is-external=true#FINEST" title="class or interface in java.util.logging"><code>FINEST</code></a></td>
<td>whenever a proxy is prepared</td>
</tr>
</table>
<p></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.AddAttributesTask.html" title="class in net.jini.lookup">JoinManager.AddAttributesTask</a></span></code>
<div class="block">Task that asynchronously augments the attributes associated with this
join manager's service in the lookup service referenced by the
current instance of this class.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.Conf.html" title="class in net.jini.lookup">JoinManager.Conf</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.DiscardProxyTask.html" title="class in net.jini.lookup">JoinManager.DiscardProxyTask</a></span></code>
<div class="block">Task that asynchronously requests the cancellation of the lease
on the <code>ServiceRegistration</code> referenced by the given
<code>ProxyReg</code> object.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.DiscMgrListener.html" title="class in net.jini.lookup">JoinManager.DiscMgrListener</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.JoinTask.html" title="class in net.jini.lookup">JoinManager.JoinTask</a></span></code>
<div class="block">Abstract base class from which all the sub-task classes are derived.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.LeaseExpireNotifyTask.html" title="class in net.jini.lookup">JoinManager.LeaseExpireNotifyTask</a></span></code>
<div class="block">Task that asynchronously re-registers the service associated with this
join manager with the lookup service referenced by the current
instance of this class.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.ModifyAttributesTask.html" title="class in net.jini.lookup">JoinManager.ModifyAttributesTask</a></span></code>
<div class="block">Task that asynchronously modifies the attributes associated with this
join manager's service in the lookup service referenced by the
current instance of this class.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.ProxyReg.html" title="class in net.jini.lookup">JoinManager.ProxyReg</a></span></code>
<div class="block">Wrapper class in which each instance corresponds to a lookup
service to discover, and with which this join manager's service
should be registered.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.ProxyRegTask.html" title="class in net.jini.lookup">JoinManager.ProxyRegTask</a></span></code>
<div class="block">Abstract base class from which all of the task classes are derived.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.ProxyRegTaskQueue.html" title="class in net.jini.lookup">JoinManager.ProxyRegTaskQueue</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.RegisterTask.html" title="class in net.jini.lookup">JoinManager.RegisterTask</a></span></code>
<div class="block">Task that asynchronously registers the service associated with this
join manager with the lookup service referenced by the current
instance of this class.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.SetAttributesTask.html" title="class in net.jini.lookup">JoinManager.SetAttributesTask</a></span></code>
<div class="block">Task that asynchronously replaces the attributes associated with this
join manager's service in the lookup service referenced by the
current instance of this class.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#bCreateDiscMgr">bCreateDiscMgr</a></span></code>
<div class="block">Flag that indicate whether the discovery manager employed by this
join manager was created by this join manager itself, or by the
entity that constructed this join manager.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#bTerminated">bTerminated</a></span></code>
<div class="block">Flag that indicates if this join manager has been terminated.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup">ServiceIDListener</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#callback">callback</a></span></code>
<div class="block">Contains the listener -- instantiated by the entity that constructs
this join manager -- that will receive an event containing the
service ID assigned to this join manager's service by one of the
lookup services with which that service is registered.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#COMPONENT_NAME">COMPONENT_NAME</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#discMgr">discMgr</a></span></code>
<div class="block">Contains the discovery manager that discovers the lookup services
with which this join manager will register its associated service.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../net/jini/lookup/JoinManager.DiscMgrListener.html" title="class in net.jini.lookup">JoinManager.DiscMgrListener</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#discMgrListener">discMgrListener</a></span></code>
<div class="block">Contains the discovery listener registered by this join manager with
the discovery manager so that this join manager is notified whenever
one of the desired lookup services is discovered or discarded.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent.ExecutorService.html?is-external=true" title="class or interface in java.util">java.util.concurrent.ExecutorService</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#executor">executor</a></span></code>
<div class="block">Task manager for the various tasks executed by this join manager.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../net/jini/lookup/JoinManager.ProxyReg.html" title="class in net.jini.lookup">JoinManager.ProxyReg</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#joinSet">joinSet</a></span></code>
<div class="block">Contains elements of type <code>ProxyReg</code> where each element
references a proxy to one of the lookup services with which this
join manager's service is registered.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#leaseRenewalMgr">leaseRenewalMgr</a></span></code>
<div class="block">Contains the lease renewal manager that renews all of the leases
this join manager's service holds with each lookup service with which
it has been registered.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Logger.html?is-external=true" title="class or interface in java.util.logging">Logger</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#logger">logger</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#lookupAttr">lookupAttr</a></span></code>
<div class="block">Contains the attributes with which to associate the service in each
of the lookup services with which this join manager registers the
service.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#MAX_N_TASKS">MAX_N_TASKS</a></span></code>
<div class="block">Maximum number of concurrent tasks that can be run in any default
ExecutorService created by this class.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#maxNRetries">maxNRetries</a></span></code>
<div class="block">Maximum number of times a failed task is allowed to be re-executed.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../net/jini/lookup/JoinManager.ProxyRegTaskQueue.html" title="class in net.jini.lookup">JoinManager.ProxyRegTaskQueue</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#proxyRegTaskQueue">proxyRegTaskQueue</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security">ProxyPreparer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#registrarPreparer">registrarPreparer</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security">ProxyPreparer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#registrationPreparer">registrationPreparer</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#renewalDuration">renewalDuration</a></span></code>
<div class="block">The value to use as the <code>renewDuration</code> parameter
when invoking the lease renewal manager's <code>renewUntil</code>
method to add a service lease to manage.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../net/jini/core/lookup/ServiceItem.html" title="class in net.jini.core.lookup">ServiceItem</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#serviceItem">serviceItem</a></span></code>
<div class="block">Contains the reference to the service that is to be registered with
all of the desired lookup services referenced by <code>discMgr</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security">ProxyPreparer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#serviceLeasePreparer">serviceLeasePreparer</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#taskSeqN">taskSeqN</a></span></code>
<div class="block">Whenever a task is created in this join manager, it is assigned a
unique sequence number so that the task is not run prior to the
execution, and completion of, any other tasks with which that task
is associated (tasks are grouped by the <code>ProxyReg</code> with
which each task is associated).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../org/apache/river/thread/WakeupManager.html" title="class in org.apache.river.thread">WakeupManager</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#wakeupMgr">wakeupMgr</a></span></code>
<div class="block">Wakeup manager for the various tasks executed by this join manager.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.core.lookup.ServiceID-net.jini.discovery.DiscoveryManagement-net.jini.lease.LeaseRenewalManager-">JoinManager</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/core/lookup/ServiceID.html" title="class in net.jini.core.lookup">ServiceID</a>&nbsp;serviceID,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr)</code>
<div class="block">Constructs an instance of this class that will register the
service with all discovered lookup services, using the supplied
<code>ServiceID</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.core.lookup.ServiceID-net.jini.discovery.DiscoveryManagement-net.jini.lease.LeaseRenewalManager-net.jini.config.Configuration-">JoinManager</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/core/lookup/ServiceID.html" title="class in net.jini.core.lookup">ServiceID</a>&nbsp;serviceID,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr,
<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</a>&nbsp;config)</code>
<div class="block">Constructs an instance of this class, configured using the items
retrieved through the given <code>Configuration</code>, that will
register the service with all discovered lookup services, using the
supplied <code>ServiceID</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.lookup.ServiceIDListener-net.jini.discovery.DiscoveryManagement-net.jini.lease.LeaseRenewalManager-">JoinManager</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup">ServiceIDListener</a>&nbsp;callback,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr)</code>
<div class="block">Constructs an instance of this class that will register the given
service reference with all discovered lookup services and, through
an event sent to the given <code>ServiceIDListener</code> object,
communicate the service ID assigned by the first lookup service
with which the service is registered.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.lookup.ServiceIDListener-net.jini.discovery.DiscoveryManagement-net.jini.lease.LeaseRenewalManager-net.jini.config.Configuration-">JoinManager</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup">ServiceIDListener</a>&nbsp;callback,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr,
<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</a>&nbsp;config)</code>
<div class="block">Constructs an instance of this class, configured using the items
retrieved through the given <code>Configuration</code> object,
that will register the given service reference with all discovered
lookup services and, through an event sent to the given
<code>ServiceIDListener</code> object, communicate the service ID
assigned by the first lookup service with which the service is
registered.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.core.lookup.ServiceID-net.jini.lookup.ServiceIDListener-net.jini.lookup.JoinManager.Conf-">JoinManager</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/core/lookup/ServiceID.html" title="class in net.jini.core.lookup">ServiceID</a>&nbsp;serviceID,
<a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup">ServiceIDListener</a>&nbsp;callback,
<a href="../../../net/jini/lookup/JoinManager.Conf.html" title="class in net.jini.lookup">JoinManager.Conf</a>&nbsp;conf)</code>
<div class="block">Convenience method invoked by the constructors of this class that
uses the given <code>Configuration</code> to initialize the current
instance of this utility, and initiates all join processing for
the given parameters.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#addAttributes-net.jini.core.entry.Entry:A-">addAttributes</a></span>(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets)</code>
<div class="block">Associates a new set of attributes with the service, in addition to
the service's current set of attributes.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#addAttributes-net.jini.core.entry.Entry:A-boolean-">addAttributes</a></span>(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
boolean&nbsp;checkSC)</code>
<div class="block">Associates a new set of attributes with the service, in addition to
the service's current set of attributes.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>private <a href="../../../net/jini/lookup/JoinManager.ProxyReg.html" title="class in net.jini.lookup">JoinManager.ProxyReg</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#findReg-net.jini.core.lookup.ServiceRegistrar-">findReg</a></span>(<a href="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup">ServiceRegistrar</a>&nbsp;proxy)</code>
<div class="block">For the given lookup service proxy, searches the <code>joinSet</code>
for the corresponding <code>ProxyReg</code> element, and upon finding
such an element, returns that element; otherwise returns
<code>null</code>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#getAttributes--">getAttributes</a></span>()</code>
<div class="block">Returns an array containing the set of attributes currently associated
with the service.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>private static <a href="../../../net/jini/lookup/JoinManager.Conf.html" title="class in net.jini.lookup">JoinManager.Conf</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#getConf-net.jini.config.Configuration-net.jini.lease.LeaseRenewalManager-net.jini.discovery.DiscoveryManagement-java.lang.Object-">getConf</a></span>(<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</a>&nbsp;config,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy)</code>
<div class="block">This method is for constructors that use an empty configuration.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>private static <a href="../../../net/jini/lookup/JoinManager.Conf.html" title="class in net.jini.lookup">JoinManager.Conf</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#getConfig-net.jini.config.Configuration-net.jini.lease.LeaseRenewalManager-net.jini.discovery.DiscoveryManagement-java.lang.Object-">getConfig</a></span>(<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</a>&nbsp;config,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy)</code>
<div class="block">Gets the configuration and throws any exceptions.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#getDiscoveryManager--">getDiscoveryManager</a></span>()</code>
<div class="block">Returns the instance of <code>DiscoveryManagement</code> that was
either passed into the constructor, or that was created as a result
of <code>null</code> being input to that parameter.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup">ServiceRegistrar</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#getJoinSet--">getJoinSet</a></span>()</code>
<div class="block">Returns an array of <code>ServiceRegistrar</code> objects, each
corresponding to a lookup service with which the service is currently
registered (joined).</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#getLeaseRenewalManager--">getLeaseRenewalManager</a></span>()</code>
<div class="block">Returns the instance of the <code>LeaseRenewalManager</code> class
that was either passed into the constructor, or that was created
as a result of <code>null</code> being input to that parameter.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#modifyAttributes-net.jini.core.entry.Entry:A-net.jini.core.entry.Entry:A-">modifyAttributes</a></span>(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSetTemplates,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets)</code>
<div class="block">Changes the service's current set of attributes using the same
semantics as the <code>modifyAttributes</code> method of the
<code>ServiceRegistration</code> class.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#modifyAttributes-net.jini.core.entry.Entry:A-net.jini.core.entry.Entry:A-boolean-">modifyAttributes</a></span>(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSetTemplates,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
boolean&nbsp;checkSC)</code>
<div class="block">Changes the service's current set of attributes using the same
semantics as the <code>modifyAttributes</code> method of the
<code>ServiceRegistration</code> class.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#removeTasks-net.jini.lookup.JoinManager.ProxyReg-">removeTasks</a></span>(<a href="../../../net/jini/lookup/JoinManager.ProxyReg.html" title="class in net.jini.lookup">JoinManager.ProxyReg</a>&nbsp;proxyReg)</code>
<div class="block">Removes (from the task manager) and cancels (in the wakeup manager)
all tasks associated with the given instance of <code>ProxyReg</code>.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#replaceRegistration-java.lang.Object-">replaceRegistration</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy)</code>
<div class="block">Registers a new reference to the service with all current and future
discovered lookup services.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#replaceRegistration-java.lang.Object-net.jini.core.entry.Entry:A-">replaceRegistration</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets)</code>
<div class="block">Registers a new reference to the service with all current and future
discovered lookup services, applying semantics identical to the
one-argument form of this method, except with respect to the
registration of the given attribute sets.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#replaceRegistrationDo-java.lang.Object-net.jini.core.entry.Entry:A-boolean-">replaceRegistrationDo</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
boolean&nbsp;doAttrs)</code>
<div class="block">Convenience method invoked by either form of the method
<code>replaceRegistration</code>.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#setAttributes-net.jini.core.entry.Entry:A-">setAttributes</a></span>(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets)</code>
<div class="block">Replaces the service's current set of attributes with a new set of
attributes.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#terminate--">terminate</a></span>()</code>
<div class="block">Performs cleanup duties related to the termination of the lookup
service discovery event mechanism, as well as the lease and
thread management performed by the <code>JoinManager</code>.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#terminateTaskMgr--">terminateTaskMgr</a></span>()</code>
<div class="block">Removes from the task manager, all pending tasks regardless of the
the instance of <code>ProxyReg</code> with which the task is
associated, and then terminates the task manager, and makes it
a candidate for garbage collection.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../net/jini/lookup/JoinManager.html#testForNullElement-java.lang.Object:A-">testForNullElement</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;a)</code>
<div class="block">Examines the elements of the input set and, upon finding at least one
<code>null</code> element, throws a <code>NullPointerException</code>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="COMPONENT_NAME">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>COMPONENT_NAME</h4>
<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> COMPONENT_NAME</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#net.jini.lookup.JoinManager.COMPONENT_NAME">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="logger">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>logger</h4>
<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/Logger.html?is-external=true" title="class or interface in java.util.logging">Logger</a> logger</pre>
</li>
</ul>
<a name="MAX_N_TASKS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MAX_N_TASKS</h4>
<pre>private static final&nbsp;int MAX_N_TASKS</pre>
<div class="block">Maximum number of concurrent tasks that can be run in any default
ExecutorService created by this class.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../constant-values.html#net.jini.lookup.JoinManager.MAX_N_TASKS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="taskSeqN">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>taskSeqN</h4>
<pre>private&nbsp;int taskSeqN</pre>
<div class="block">Whenever a task is created in this join manager, it is assigned a
unique sequence number so that the task is not run prior to the
execution, and completion of, any other tasks with which that task
is associated (tasks are grouped by the <code>ProxyReg</code> with
which each task is associated). This field contains the value of
the sequence number assigned to the most recently created task.</div>
</li>
</ul>
<a name="executor">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>executor</h4>
<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent.ExecutorService.html?is-external=true" title="class or interface in java.util">java.util.concurrent.ExecutorService</a> executor</pre>
<div class="block">Task manager for the various tasks executed by this join manager.
On the first attempt to execute any task is managed by this
<code>ExecutorService</code> so that the number of concurrent threads
can be bounded. If one or more of those attempts fails, a
<code>WakeupManager</code> is used (through the use of a
<code>RetryTask</code>) to schedule - at a later time (employing a
"backoff strategy") - the re-execution of each failed task in this
<code>ExecutorService</code>.</div>
</li>
</ul>
<a name="proxyRegTaskQueue">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>proxyRegTaskQueue</h4>
<pre>private final&nbsp;<a href="../../../net/jini/lookup/JoinManager.ProxyRegTaskQueue.html" title="class in net.jini.lookup">JoinManager.ProxyRegTaskQueue</a> proxyRegTaskQueue</pre>
</li>
</ul>
<a name="maxNRetries">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maxNRetries</h4>
<pre>private final&nbsp;int maxNRetries</pre>
<div class="block">Maximum number of times a failed task is allowed to be re-executed.</div>
</li>
</ul>
<a name="wakeupMgr">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wakeupMgr</h4>
<pre>private final&nbsp;<a href="../../../org/apache/river/thread/WakeupManager.html" title="class in org.apache.river.thread">WakeupManager</a> wakeupMgr</pre>
<div class="block">Wakeup manager for the various tasks executed by this join manager.
After an initial failure of any task executed by this join manager,
the failed task is managed by this <code>WakeupManager</code>; which
schedules the re-execution of the failed task - in the task manager -
at various times in the future until either the task succeeds or the
task has been executed the maximum number of allowable times. This
wakeup manager is supplied to the <code>RetryTask</code>) that
performs the actual task execution so that when termination of this
join manager is requested, all tasks scheduled for retry by this
wakeup manager can be cancelled.</div>
</li>
</ul>
<a name="serviceItem">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>serviceItem</h4>
<pre>private volatile&nbsp;<a href="../../../net/jini/core/lookup/ServiceItem.html" title="class in net.jini.core.lookup">ServiceItem</a> serviceItem</pre>
<div class="block">Contains the reference to the service that is to be registered with
all of the desired lookup services referenced by <code>discMgr</code>.</div>
</li>
</ul>
<a name="lookupAttr">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lookupAttr</h4>
<pre>private volatile&nbsp;<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[] lookupAttr</pre>
<div class="block">Contains the attributes with which to associate the service in each
of the lookup services with which this join manager registers the
service.</div>
</li>
</ul>
<a name="callback">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>callback</h4>
<pre>private final&nbsp;<a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup">ServiceIDListener</a> callback</pre>
<div class="block">Contains the listener -- instantiated by the entity that constructs
this join manager -- that will receive an event containing the
service ID assigned to this join manager's service by one of the
lookup services with which that service is registered.</div>
</li>
</ul>
<a name="joinSet">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>joinSet</h4>
<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../net/jini/lookup/JoinManager.ProxyReg.html" title="class in net.jini.lookup">JoinManager.ProxyReg</a>&gt; joinSet</pre>
<div class="block">Contains elements of type <code>ProxyReg</code> where each element
references a proxy to one of the lookup services with which this
join manager's service is registered.</div>
</li>
</ul>
<a name="discMgr">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>discMgr</h4>
<pre>private final&nbsp;<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a> discMgr</pre>
<div class="block">Contains the discovery manager that discovers the lookup services
with which this join manager will register its associated service.</div>
</li>
</ul>
<a name="discMgrListener">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>discMgrListener</h4>
<pre>private final&nbsp;<a href="../../../net/jini/lookup/JoinManager.DiscMgrListener.html" title="class in net.jini.lookup">JoinManager.DiscMgrListener</a> discMgrListener</pre>
<div class="block">Contains the discovery listener registered by this join manager with
the discovery manager so that this join manager is notified whenever
one of the desired lookup services is discovered or discarded.</div>
</li>
</ul>
<a name="bCreateDiscMgr">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bCreateDiscMgr</h4>
<pre>private final&nbsp;boolean bCreateDiscMgr</pre>
<div class="block">Flag that indicate whether the discovery manager employed by this
join manager was created by this join manager itself, or by the
entity that constructed this join manager.</div>
</li>
</ul>
<a name="leaseRenewalMgr">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leaseRenewalMgr</h4>
<pre>private final&nbsp;<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a> leaseRenewalMgr</pre>
<div class="block">Contains the lease renewal manager that renews all of the leases
this join manager's service holds with each lookup service with which
it has been registered.</div>
</li>
</ul>
<a name="renewalDuration">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>renewalDuration</h4>
<pre>private final&nbsp;long renewalDuration</pre>
<div class="block">The value to use as the <code>renewDuration</code> parameter
when invoking the lease renewal manager's <code>renewUntil</code>
method to add a service lease to manage. This value represents,
effectively, the time interval (in milliseconds) over which each
managed lease must be renewed. As this value is made smaller,
renewal requests will be made more frequently while the service
is up, and lease expirations will occur sooner when the service
goes down.</div>
</li>
</ul>
<a name="bTerminated">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bTerminated</h4>
<pre>private volatile&nbsp;boolean bTerminated</pre>
<div class="block">Flag that indicates if this join manager has been terminated.</div>
</li>
</ul>
<a name="registrarPreparer">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registrarPreparer</h4>
<pre>private final&nbsp;<a href="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security">ProxyPreparer</a> registrarPreparer</pre>
</li>
</ul>
<a name="registrationPreparer">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registrationPreparer</h4>
<pre>private final&nbsp;<a href="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security">ProxyPreparer</a> registrationPreparer</pre>
</li>
</ul>
<a name="serviceLeasePreparer">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>serviceLeasePreparer</h4>
<pre>private final&nbsp;<a href="../../../net/jini/security/ProxyPreparer.html" title="interface in net.jini.security">ProxyPreparer</a> serviceLeasePreparer</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.lookup.ServiceIDListener-net.jini.discovery.DiscoveryManagement-net.jini.lease.LeaseRenewalManager-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>JoinManager</h4>
<pre>public&nbsp;JoinManager(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup">ServiceIDListener</a>&nbsp;callback,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr)
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Constructs an instance of this class that will register the given
service reference with all discovered lookup services and, through
an event sent to the given <code>ServiceIDListener</code> object,
communicate the service ID assigned by the first lookup service
with which the service is registered. This constructor is typically
used by services which have not yet been assigned a service ID.
<p>
The value input to the <code>serviceProxy</code> parameter represents
the service reference (proxy) to register with each discovered lookup
service. If the <code>Object</code> input to that parameter is not
<code>Serializable</code>, an <code>IllegalArgumentException</code>
is thrown. If <code>null</code> is input to that parameter, a
<code>NullPointerException</code> is thrown.
<p>
The value input to the <code>attrSets</code> parameter is an array
of <code>Entry</code> objects, none of whose elements may be
<code>null</code>, that represents the new set of attributes to
associate with the new service reference to be registered. Passing
<code>null</code> as the value of the <code>attrSets</code> parameter
is equivalent to passing an empty array. If any of the elements
of the <code>attrSets</code> array are <code>null</code>, a
<code>NullPointerException</code> is thrown. The set of attributes
passed in this parameter will be associated with the service in all
future join processing until those attributes are changed through
an invocation of a method on this class such as,
<code>addAttributes</code>, <code>setAttributes</code>,
<code>modifyAttributes</code>, or <code>replaceRegistration</code>.
<p>
When constructing this utility, the service supplies an object through
which notifications that indicate a lookup service has been discovered
or discarded will be received. At a minimum, the object supplied
(through the <code>discoveryMgr</code> parameter) must satisfy the
contract defined in the <code>DiscoveryManagement</code> interface.
That is, the object supplied must provide this utility with the ability
to set discovery listeners and to discard previously discovered
lookup services when they are found to be unavailable. A value of
<code>null</code> may be input to the <code>discoveryMgr</code>
parameter. When <code>null</code> is input to that parameter, an
instance of <code>LookupDiscoveryManager</code> is used to listen
for events announcing the discovery of only those lookup services
that are members of the public group.
<p>
The object input to the <code>leaseMgr</code> parameter provides for
the coordination, systematic renewal, and overall management of all
leases on the given service reference's residency in the lookup
services that have been joined. As with the <code>discoveryMgr</code>
parameter, a value of <code>null</code> may be input to this
parameter. When <code>null</code> is input to this parameter,
an instance of <code>LeaseRenewalManager</code>, initially managing
no <code>Lease</code> objects will be used. This feature allows a
service to either use a single entity to manage all of its leases,
or to use separate entities: one to manage the leases unrelated to
the join process, and one to manage the leases that result from the
join process, that are accessible only within the current instance
of the <code>JoinManager</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceProxy</code> - the service reference (proxy) to register with all
discovered lookup services</dd>
<dd><code>attrSets</code> - array of <code>Entry</code> consisting of the
attribute sets with which to register the service</dd>
<dd><code>callback</code> - reference to the object that should receive the
event containing the service ID, assigned to the
service by the first lookup service with which the
service reference is registered</dd>
<dd><code>discoveryMgr</code> - reference to the <code>DiscoveryManagement</code>
object this class should use to manage lookup
service discovery on behalf of the given service</dd>
<dd><code>leaseMgr</code> - reference to the <code>LeaseRenewalManager</code>
object this class should use to manage the leases
on the given service's residency in the lookup
services that have been joined</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the object input to the
<code>serviceProxy</code> parameter is not serializable</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if either <code>null</code> is
input to the <code>serviceProxy</code> parameter, or at least
one of the elements of the <code>attrSets</code> parameter is
<code>null</code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if initiation of discovery process results
in <code>IOException</code> when socket allocation occurs</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this method is called on
a terminated <code>JoinManager</code> instance. Note that this
exception is implementation-specific.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup"><code>ServiceIDListener</code></a>,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><code>DiscoveryManagement</code></a>,
<a href="../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><code>LookupDiscoveryManager</code></a>,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease"><code>LeaseRenewalManager</code></a></dd>
</dl>
</li>
</ul>
<a name="JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.lookup.ServiceIDListener-net.jini.discovery.DiscoveryManagement-net.jini.lease.LeaseRenewalManager-net.jini.config.Configuration-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>JoinManager</h4>
<pre>public&nbsp;JoinManager(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup">ServiceIDListener</a>&nbsp;callback,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr,
<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</a>&nbsp;config)
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config">ConfigurationException</a></pre>
<div class="block">Constructs an instance of this class, configured using the items
retrieved through the given <code>Configuration</code> object,
that will register the given service reference with all discovered
lookup services and, through an event sent to the given
<code>ServiceIDListener</code> object, communicate the service ID
assigned by the first lookup service with which the service is
registered. This constructor is typically used by services which
have not yet been assigned a service ID, and which wish to allow
for deployment-time configuration of the service's join processing.
<p>
The items used to configure the current instance of this class
are obtained through the object input to the <code>config</code>
parameter. If <code>null</code> is input to that parameter, a
<code>NullPointerException</code> is thrown.
<p>
The object this utility will use to manage lookup service discovery on
behalf of the given service can be supplied through either the
<code>discoveryMgr</code> parameter or through an entry contained
in the given <code>Configuration</code>. If <code>null</code> is input
to the <code>discoveryMgr</code> parameter, an attempt will first be
made to retrieve from the given <code>Configuration</code>, an entry
named "discoveryManager" (described above). If such an object is
successfully retrieved from the given <code>Configuration</code>, that
object will be used to perform the lookup service discovery management
required by this utility.
<p>
If <code>null</code> is input to the <code>discoveryMgr</code>
parameter, and no entry named "discoveryManager" is specified in the
given <code>Configuration</code>, then an instance of the utility class
<code>LookupDiscoveryManager</code> will be used to listen for events
announcing the discovery of only those lookup services that are
members of the public group.
<p>
As with the <code>discoveryMgr</code> parameter, the object this
utility will use to perform lease management on behalf of the given
service can be supplied through either the <code>leaseMgr</code>
parameter or through an entry contained in the given
<code>Configuration</code>. If <code>null</code> is input to the
<code>leaseMgr</code> parameter, an attempt will first be made to
retrieve from the given <code>Configuration</code>, an entry named
"leaseManager" (described above). If such an object is successfully
retrieved from the given <code>Configuration</code>, that object
will be used to perform the lease management required by this utility.
<p>
If <code>null</code> is input to the <code>leaseMgr</code>
parameter, and no entry named "leaseManager" is specified in the
given <code>Configuration</code>, then an instance of the utility
class <code>LeaseRenewalManager</code> that takes the given
<code>Configuration</code> will be created (initially managing no
leases) and used to perform all required lease renewal management
on behalf of the given service.
<p>
Except for the <code>config</code> parameter and the additional
semantics imposed by that parameter (as noted above), all other
parameters of this form of the constructor, along with their
associated semantics, are identical to that of the five-argument
constructor that takes a <code>ServiceIDListener</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceProxy</code> - the service reference (proxy) to register with all
discovered lookup services</dd>
<dd><code>attrSets</code> - array of <code>Entry</code> consisting of the
attribute sets with which to register the service</dd>
<dd><code>callback</code> - reference to the <code>ServiceIDListener</code>
object that should receive the event containing the
service ID assigned to the service by the first
lookup service with which the service reference
is registered</dd>
<dd><code>discoveryMgr</code> - reference to the <code>DiscoveryManagement</code>
object this class should use to manage lookup
service discovery on behalf of the given service</dd>
<dd><code>leaseMgr</code> - reference to the <code>LeaseRenewalManager</code>
object this class should use to manage the leases
on the given service's residency in the lookup
services that have been joined</dd>
<dd><code>config</code> - instance of <code>Configuration</code> through
which the items used to configure the current
instance of this class are obtained</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the object input to the
<code>serviceProxy</code> parameter is not serializable</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if <code>null</code> is input
to the <code>serviceProxy</code> parameter or the
<code>config</code> parameter, or if at least one of the
elements of the <code>attrSets</code> parameter is
<code>null</code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if initiation of discovery process results
in <code>IOException</code> when socket allocation occurs</dd>
<dd><code><a href="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config">ConfigurationException</a></code> - if an exception
occurs while retrieving an item from the given
<code>Configuration</code> object</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this method is called on
a terminated <code>JoinManager</code> instance. Note that this
exception is implementation-specific.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup"><code>ServiceIDListener</code></a>,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><code>DiscoveryManagement</code></a>,
<a href="../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><code>LookupDiscoveryManager</code></a>,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease"><code>LeaseRenewalManager</code></a>,
<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config"><code>Configuration</code></a>,
<a href="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config"><code>ConfigurationException</code></a></dd>
</dl>
</li>
</ul>
<a name="JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.core.lookup.ServiceID-net.jini.discovery.DiscoveryManagement-net.jini.lease.LeaseRenewalManager-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>JoinManager</h4>
<pre>public&nbsp;JoinManager(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/core/lookup/ServiceID.html" title="class in net.jini.core.lookup">ServiceID</a>&nbsp;serviceID,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr)
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">Constructs an instance of this class that will register the
service with all discovered lookup services, using the supplied
<code>ServiceID</code>. This constructor is typically used by
services which have already been assigned a service ID (possibly
by the service provider itself or as a result of a prior registration
with some lookup service), and which do not wish to allow for
deployment-time configuration of the service's join processing.
<p>
Except that the desired <code>ServiceID</code> is supplied through the
<code>serviceID</code> parameter rather than through a notification
sent to a <code>ServiceIDListener</code>, all other parameters
of this form of the constructor, along with their associated semantics,
are identical to that of the five-argument constructor that takes
a <code>ServiceIDListener</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceProxy</code> - a reference to the service requesting the services
of this class</dd>
<dd><code>attrSets</code> - array of <code>Entry</code> consisting of the
attribute sets with which to register the service</dd>
<dd><code>serviceID</code> - an instance of <code>ServiceID</code> with which to
register the service with all desired lookup
services</dd>
<dd><code>discoveryMgr</code> - reference to the <code>DiscoveryManagement</code>
object this class should use to manage the given
service's lookup service discovery duties</dd>
<dd><code>leaseMgr</code> - reference to the <code>LeaseRenewalManager</code>
object this class should use to manage the leases
on the given service's residency in the lookup
services that have been joined</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the object input to the
<code>serviceProxy</code> parameter is not serializable</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if either <code>null</code> is
input to the <code>serviceProxy</code> parameter, or at least
one of the elements of the <code>attrSets</code> parameter is
<code>null</code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if initiation of discovery process results
in <code>IOException</code> when socket allocation occurs</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this method is called on
a terminated <code>JoinManager</code> instance. Note that this
exception is implementation-specific.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/core/lookup/ServiceID.html" title="class in net.jini.core.lookup"><code>ServiceID</code></a>,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><code>DiscoveryManagement</code></a>,
<a href="../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><code>LookupDiscoveryManager</code></a>,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease"><code>LeaseRenewalManager</code></a></dd>
</dl>
</li>
</ul>
<a name="JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.core.lookup.ServiceID-net.jini.discovery.DiscoveryManagement-net.jini.lease.LeaseRenewalManager-net.jini.config.Configuration-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>JoinManager</h4>
<pre>public&nbsp;JoinManager(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/core/lookup/ServiceID.html" title="class in net.jini.core.lookup">ServiceID</a>&nbsp;serviceID,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr,
<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</a>&nbsp;config)
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config">ConfigurationException</a></pre>
<div class="block">Constructs an instance of this class, configured using the items
retrieved through the given <code>Configuration</code>, that will
register the service with all discovered lookup services, using the
supplied <code>ServiceID</code>. This constructor is typically used by
services which have already been assigned a service ID (possibly
by the service provider itself or as a result of a prior registration
with some lookup service), and which wish to allow for deployment-time
configuration of the service's join processing.
<p>
The items used to configure the current instance of this class
are obtained through the object input to the <code>config</code>
parameter. If <code>null</code> is input to that parameter, a
<code>NullPointerException</code> is thrown.
<p>
Except that the desired <code>ServiceID</code> is supplied through the
<code>serviceID</code> parameter rather than through a notification
sent to a <code>ServiceIDListener</code>, all other parameters
of this form of the constructor, along with their associated semantics,
are identical to that of the six-argument constructor that takes
a <code>ServiceIDListener</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceProxy</code> - a reference to the service requesting the services
of this class</dd>
<dd><code>attrSets</code> - array of <code>Entry</code> consisting of the
attribute sets with which to register the service.</dd>
<dd><code>serviceID</code> - an instance of <code>ServiceID</code> with which to
register the service with all desired lookup
services</dd>
<dd><code>discoveryMgr</code> - reference to the <code>DiscoveryManagement</code>
object this class should use to manage lookup
service discovery on behalf of the given service</dd>
<dd><code>leaseMgr</code> - reference to the <code>LeaseRenewalManager</code>
object this class should use to manage the leases
on the given service's residency in the lookup
services that have been joined</dd>
<dd><code>config</code> - instance of <code>Configuration</code> through
which the items used to configure the current
instance of this class are obtained</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the object input to the
<code>serviceProxy</code> parameter is not serializable</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if <code>null</code> is input
to the <code>serviceProxy</code> parameter or the
<code>config</code> parameter, or if at least one of the
elements of the <code>attrSets</code> parameter is
<code>null</code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if initiation of discovery process results
in <code>IOException</code> when socket allocation occurs</dd>
<dd><code><a href="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config">ConfigurationException</a></code> - if an exception
occurs while retrieving an item from the given
<code>Configuration</code> object</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this method is called on
a terminated <code>JoinManager</code> instance. Note that this
exception is implementation-specific.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/core/lookup/ServiceID.html" title="class in net.jini.core.lookup"><code>ServiceID</code></a>,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><code>DiscoveryManagement</code></a>,
<a href="../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><code>LookupDiscoveryManager</code></a>,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease"><code>LeaseRenewalManager</code></a>,
<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config"><code>Configuration</code></a>,
<a href="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config"><code>ConfigurationException</code></a></dd>
</dl>
</li>
</ul>
<a name="JoinManager-java.lang.Object-net.jini.core.entry.Entry:A-net.jini.core.lookup.ServiceID-net.jini.lookup.ServiceIDListener-net.jini.lookup.JoinManager.Conf-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>JoinManager</h4>
<pre>private&nbsp;JoinManager(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
<a href="../../../net/jini/core/lookup/ServiceID.html" title="class in net.jini.core.lookup">ServiceID</a>&nbsp;serviceID,
<a href="../../../net/jini/lookup/ServiceIDListener.html" title="interface in net.jini.lookup">ServiceIDListener</a>&nbsp;callback,
<a href="../../../net/jini/lookup/JoinManager.Conf.html" title="class in net.jini.lookup">JoinManager.Conf</a>&nbsp;conf)</pre>
<div class="block">Convenience method invoked by the constructors of this class that
uses the given <code>Configuration</code> to initialize the current
instance of this utility, and initiates all join processing for
the given parameters. This method handles the various configurations
allowed by the different constructors.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getDiscoveryManager--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDiscoveryManager</h4>
<pre>public&nbsp;<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;getDiscoveryManager()</pre>
<div class="block">Returns the instance of <code>DiscoveryManagement</code> that was
either passed into the constructor, or that was created as a result
of <code>null</code> being input to that parameter.
<p>
The object returned by this method encapsulates the mechanism by which
either the <code>JoinManager</code> or the entity itself can set
discovery listeners and discard previously discovered lookup services
when they are found to be unavailable.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the instance of the <code>DiscoveryManagement</code> interface
that was either passed into the constructor, or that was
created as a result of <code>null</code> being input to that
parameter.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><code>DiscoveryManagement</code></a>,
<a href="../../../net/jini/discovery/LookupDiscoveryManager.html" title="class in net.jini.discovery"><code>LookupDiscoveryManager</code></a></dd>
</dl>
</li>
</ul>
<a name="getLeaseRenewalManager--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLeaseRenewalManager</h4>
<pre>public&nbsp;<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;getLeaseRenewalManager()</pre>
<div class="block">Returns the instance of the <code>LeaseRenewalManager</code> class
that was either passed into the constructor, or that was created
as a result of <code>null</code> being input to that parameter.
<p>
The object returned by this method manages the leases requested and
held by the <code>JoinManager</code>. Although it may also manage
leases unrelated to the join process that are requested and held by
the service itself, the leases with which the <code>JoinManager</code>
is concerned are the leases that correspond to the service registration
requests made with each lookup service the service wishes to join.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the instance of the <code>LeaseRenewalManager</code> class
that was either passed into the constructor, or that was
created as a result of <code>null</code> being input to that
parameter.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery"><code>DiscoveryManagement</code></a>,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease"><code>LeaseRenewalManager</code></a></dd>
</dl>
</li>
</ul>
<a name="getJoinSet--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJoinSet</h4>
<pre>public&nbsp;<a href="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup">ServiceRegistrar</a>[]&nbsp;getJoinSet()</pre>
<div class="block">Returns an array of <code>ServiceRegistrar</code> objects, each
corresponding to a lookup service with which the service is currently
registered (joined). If there are no lookup services with which the
service is currently registered, this method returns the empty array.
This method returns a new array upon each invocation.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>array of instances of <code>ServiceRegistrar</code>, each
corresponding to a lookup service with which the service is
currently registered</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup"><code>ServiceRegistrar</code></a></dd>
</dl>
</li>
</ul>
<a name="getAttributes--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAttributes</h4>
<pre>public&nbsp;<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;getAttributes()</pre>
<div class="block">Returns an array containing the set of attributes currently associated
with the service. If the service is not currently associated with an
attribute set, this method returns the empty array. This method returns
a new array upon each invocation.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>array of instances of <code>Entry</code> consisting of the
set of attributes with which the service is registered in
each lookup service that it has joined</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry"><code>Entry</code></a>,
<a href="../../../net/jini/lookup/JoinManager.html#setAttributes-net.jini.core.entry.Entry:A-"><code>setAttributes(net.jini.core.entry.Entry[])</code></a></dd>
</dl>
</li>
</ul>
<a name="addAttributes-net.jini.core.entry.Entry:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addAttributes</h4>
<pre>public&nbsp;void&nbsp;addAttributes(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets)</pre>
<div class="block">Associates a new set of attributes with the service, in addition to
the service's current set of attributes. The association of this new
set of attributes with the service will be propagated to each lookup
service with which the service is registered. Note that this
propagation is performed asynchronously, thus there is no guarantee
that the propagation of the attributes to all lookup services with
which the service is registered will have completed upon return from
this method.
<p>
An invocation of this method with duplicate elements in the
<code>attrSets</code> parameter (where duplication means attribute
equality as defined by calling the <code>MarshalledObject.equals</code>
method on field values) is equivalent to performing the invocation
with the duplicates removed from that parameter.
<p>
Note that because there is no guarantee that attribute propagation
will have completed upon return from this method, services that
invoke this method must take care not to modify the contents of the
<code>attrSets</code> parameter. Doing so could cause the service's
attribute state to be corrupted or inconsistent on a subset of the
lookup services with which the service is registered as compared with
the state reflected on the remaining lookup services. It is for this
reason that the effects of modifying the contents of the
<code>attrSets</code> parameter, after this method is invoked, are
undefined.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>attrSets</code> - array of <code>Entry</code> consisting of the
attribute sets with which to augment the service's
current set of attributes</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if either <code>null</code> is
input to the <code>attrSets</code> parameter, or one or more
of the elements of the <code>attrSets</code> parameter is
<code>null</code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry"><code>Entry</code></a></dd>
</dl>
</li>
</ul>
<a name="addAttributes-net.jini.core.entry.Entry:A-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addAttributes</h4>
<pre>public&nbsp;void&nbsp;addAttributes(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
boolean&nbsp;checkSC)</pre>
<div class="block">Associates a new set of attributes with the service, in addition to
the service's current set of attributes. The association of this new
set of attributes with the service will be propagated to each lookup
service with which the service is registered. Note that this
propagation is performed asynchronously, thus there is no guarantee
that the propagation of the attributes to all lookup services with
which the service is registered will have completed upon return from
this method.
<p>
An invocation of this method with duplicate elements in the
<code>attrSets</code> parameter (where duplication means attribute
equality as defined by calling the <code>MarshalledObject.equals</code>
method on field values) is equivalent to performing the invocation
with the duplicates removed from that parameter.
<p>
Note that because there is no guarantee that attribute propagation
will have completed upon return from this method, services that
invoke this method must take care not to modify the contents of the
<code>attrSets</code> parameter. Doing so could cause the service's
attribute state to be corrupted or inconsistent on a subset of the
lookup services with which the service is registered as compared with
the state reflected on the remaining lookup services. It is for this
reason that the effects of modifying the contents of the
<code>attrSets</code> parameter, after this method is invoked, are
undefined.
<p>
A service typically employs this version of <code>addAttributes</code>
to prevent clients or other services from attempting to add what are
referred to as "service controlled attributes" to the service's set.
A service controlled attribute is an attribute that implements the
<code>ServiceControlled</code> marker interface.
<p>
Consider a printer service. With printers, there are often times error
conditions, that only the printer can detect (for example, a paper
jam or a toner low condition). To report conditions such as these to
interested parties, the printer typically adds an attribute to its
attribute set, resulting in an event being sent that notifies clients
that have registered interest in such events. When the condition is
corrected, the printer would then remove the attribute from its set
by invoking the <code>modifyAttributes</code> method in the appropriate
manner.
<p>
Attributes representing conditions that only the service can know about
or control are good candidates for being defined as service controlled
attributes. That is, the service provider (the developer of the printer
service for example) would define the attributes that represent
conditions such as those just described to implement the
<code>ServiceControlled</code> marker interface. Thus, when other
entities attempt to add new attributes, services that wish to employ
such service controlled attributes should ultimately invoke only this
version of <code>addAttributes</code> (with the <code>checkSC</code>
parameter set to <code>true</code>), resulting in a
<code>SecurityException</code> if any of the attributes being added
happen to be service controlled attributes. In this way, only the
printer itself would be able to set a "paper jammed" or "toner low"
attribute, not some arbitrary client.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>attrSets</code> - array of <code>Entry</code> consisting of the
attribute sets with which to augment the service's
current set of attributes</dd>
<dd><code>checkSC</code> - <code>boolean</code> flag indicating whether the
elements of the set of attributes to add should be
checked to determine if they are service controlled
attributes</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if either <code>null</code> is
input to the <code>attrSets</code> parameter, or one or more
of the elements of the <code>attrSets</code> parameter is
<code>null</code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/SecurityException.html?is-external=true" title="class or interface in java.lang">SecurityException</a></code> - if the <code>checkSC</code>
parameter is <code>true</code>, and at least one of the
attributes to be added is an instance of the
<code>ServiceControlled</code> marker interface</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry"><code>Entry</code></a>,
<a href="../../../net/jini/lookup/entry/ServiceControlled.html" title="interface in net.jini.lookup.entry"><code>ServiceControlled</code></a></dd>
</dl>
</li>
</ul>
<a name="setAttributes-net.jini.core.entry.Entry:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setAttributes</h4>
<pre>public&nbsp;void&nbsp;setAttributes(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets)</pre>
<div class="block">Replaces the service's current set of attributes with a new set of
attributes. The association of this new set of attributes with the
service will be propagated to each lookup service with which the
service is registered. Note that this propagation is performed
asynchronously, thus there is no guarantee that the propagation of
the attributes to all lookup services with which the service is
registered will have completed upon return from this method.
<p>
An invocation of this method with duplicate elements in the
<code>attrSets</code> parameter (where duplication means attribute
equality as defined by calling the <code>MarshalledObject.equals</code>
method on field values) is equivalent to performing the invocation
with the duplicates removed from that parameter.
<p>
Note that because there is no guarantee that attribute propagation
will have completed upon return from this method, services that
invoke this method must take care not to modify the contents of the
<code>attrSets</code> parameter. Doing so could cause the service's
attribute state to be corrupted or inconsistent on a subset of the
lookup services with which the service is registered as compared with
the state reflected on the remaining lookup services. It is for this
reason that the effects of modifying the contents of the
<code>attrSets</code> parameter, after this method is invoked, are
undefined.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>attrSets</code> - array of <code>Entry</code> consisting of the
attribute sets with which to replace the service's
current set of attributes</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if either <code>null</code> is
input to the <code>attrSets</code> parameter, or one or more
of the elements of the <code>attrSets</code> parameter is
<code>null</code>.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry"><code>Entry</code></a>,
<a href="../../../net/jini/lookup/JoinManager.html#getAttributes--"><code>getAttributes()</code></a></dd>
</dl>
</li>
</ul>
<a name="modifyAttributes-net.jini.core.entry.Entry:A-net.jini.core.entry.Entry:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>modifyAttributes</h4>
<pre>public&nbsp;void&nbsp;modifyAttributes(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSetTemplates,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets)</pre>
<div class="block">Changes the service's current set of attributes using the same
semantics as the <code>modifyAttributes</code> method of the
<code>ServiceRegistration</code> class.
<p>
The association of the new set of attributes with the service will
be propagated to each lookup service with which the service is
registered. Note that this propagation is performed asynchronously,
thus there is no guarantee that the propagation of the attributes to
all lookup services with which the service is registered will have
completed upon return from this method.
<p>
Note that if the length of the array containing the templates does
not equal the length of the array containing the modifications, an
<code>IllegalArgumentException</code> will be thrown and propagated
through this method.
<p>
Note also that because there is no guarantee that attribute propagation
will have completed upon return from this method, services that
invoke this method must take care not to modify the contents of the
<code>attrSets</code> parameter. Doing so could cause the service's
attribute state to be corrupted or inconsistent on a subset of the
lookup services with which the service is registered as compared with
the state reflected on the remaining lookup services. It is for this
reason that the effects of modifying the contents of the
<code>attrSets</code> parameter, after this method is invoked, are
undefined.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>attrSetTemplates</code> - array of <code>Entry</code> used to identify
which elements to modify from the service's
current set of attributes</dd>
<dd><code>attrSets</code> - array of <code>Entry</code> containing the
actual modifications to make in the matching
sets found using the
<code>attrSetTemplates</code> parameter</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the array containing the
templates does not equal the length of the array containing the
modifications</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry"><code>Entry</code></a>,
<a href="../../../net/jini/core/lookup/ServiceRegistration.html#modifyAttributes-net.jini.core.entry.Entry:A-net.jini.core.entry.Entry:A-"><code>ServiceRegistration.modifyAttributes(net.jini.core.entry.Entry[], net.jini.core.entry.Entry[])</code></a></dd>
</dl>
</li>
</ul>
<a name="modifyAttributes-net.jini.core.entry.Entry:A-net.jini.core.entry.Entry:A-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>modifyAttributes</h4>
<pre>public&nbsp;void&nbsp;modifyAttributes(<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSetTemplates,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
boolean&nbsp;checkSC)</pre>
<div class="block">Changes the service's current set of attributes using the same
semantics as the <code>modifyAttributes</code> method of the
<code>ServiceRegistration</code> class.
<p>
The association of the new set of attributes with the service will
be propagated to each lookup service with which the service is
registered. Note that this propagation is performed asynchronously,
thus there is no guarantee that the propagation of the attributes to
all lookup services with which the service is registered will have
completed upon return from this method.
<p>
Note that if the length of the array containing the templates does
not equal the length of the array containing the modifications, an
<code>IllegalArgumentException</code> will be thrown and propagated
through this method.
<p>
Note also that because there is no guarantee that attribute propagation
will have completed upon return from this method, services that
invoke this method must take care not to modify the contents of the
<code>attrSets</code> parameter. Doing so could cause the service's
attribute state to be corrupted or inconsistent on a subset of the
lookup services with which the service is registered as compared with
the state reflected on the remaining lookup services. It is for this
reason that the effects of modifying the contents of the
<code>attrSets</code> parameter, after this method is invoked, are
undefined.
<p>
A service typically employs this version of
<code>modifyAttributes</code> to prevent clients or other services
from attempting to modify what are referred to as "service controlled
attributes" in the service's set. A service controlled attribute is an
attribute that implements the <code>ServiceControlled</code> marker
interface.
<p>
Attributes representing conditions that only the service can know about
or control are good candidates for being defined as service controlled
attributes. When other entities attempt to modify a service's
attributes, if the service wishes to employ such service controlled
attributes, the service should ultimately invoke only this version
of <code>modifyAttributes</code> (with the <code>checkSC</code>
parameter set to <code>true</code>), resulting in a
<code>SecurityException</code> if any of the attributes being modified
happen to be service controlled attributes.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>attrSetTemplates</code> - array of <code>Entry</code> used to identify
which elements to modify from the service's
current set of attributes</dd>
<dd><code>attrSets</code> - array of <code>Entry</code> containing the
actual modifications to make in the matching
sets found using the
<code>attrSetTemplates</code> parameter</dd>
<dd><code>checkSC</code> - <code>boolean</code> flag indicating whether the
elements of the set of attributes to modify
should be checked to determine if they are
service controlled attributes</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the array containing the
templates does not equal the length of the array containing
the modifications</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/SecurityException.html?is-external=true" title="class or interface in java.lang">SecurityException</a></code> - if the <code>checkSC</code>
parameter is <code>true</code>, and at least one of the
attributes to be modified is an instance of the
<code>ServiceControlled</code> marker interface</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry"><code>Entry</code></a>,
<a href="../../../net/jini/core/lookup/ServiceRegistration.html#modifyAttributes-net.jini.core.entry.Entry:A-net.jini.core.entry.Entry:A-"><code>ServiceRegistration.modifyAttributes(net.jini.core.entry.Entry[], net.jini.core.entry.Entry[])</code></a>,
<a href="../../../net/jini/lookup/entry/ServiceControlled.html" title="interface in net.jini.lookup.entry"><code>ServiceControlled</code></a></dd>
</dl>
</li>
</ul>
<a name="terminate--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>terminate</h4>
<pre>public&nbsp;void&nbsp;terminate()</pre>
<div class="block">Performs cleanup duties related to the termination of the lookup
service discovery event mechanism, as well as the lease and
thread management performed by the <code>JoinManager</code>. This
method will cancel all of the service's managed leases that were
granted by the lookup services with which the service is registered,
and will terminate all threads that have been created.
<p>
Note that if the discovery manager employed by the instance of this
class that is being terminated was created by the instance itself,
this method will terminate all discovery processing being performed by
that manager object on behalf of the service; otherwise, the discovery
manager supplied by the service is still valid.
<p>
Whether an instance of the <code>LeaseRenewalManager</code> class was
supplied by the service or created by the <code>JoinManager</code>
itself, any reference to that object obtained by the service prior to
termination will still be valid after termination.
Note also this class makes certain concurrency guarantees with respect
to an invocation of the terminate method while other method invocations
are in progress. The termination process will not begin until
completion of all invocations of the methods defined in the public
interface of this class. Furthermore, once the termination process has
begun, no further remote method invocations will be made by this class,
and all other method invocations made on this class will not return
until the termination process has completed.
<p>
Upon completion of the termination process, the semantics of all
current and future method invocations on the instance of this class
that was just terminated are undefined; although the reference to the
<code>LeaseRenewalManager</code> object employed by that instance
of <code>JoinManager</code> is still valid.</div>
</li>
</ul>
<a name="replaceRegistration-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replaceRegistration</h4>
<pre>public&nbsp;void&nbsp;replaceRegistration(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy)</pre>
<div class="block">Registers a new reference to the service with all current and future
discovered lookup services. The new service reference will replace
the reference that was previously registered as a result of either
constructing this utility, or a prior invocation of one of the forms
of this method. The new service reference will be registered using
the same <code>ServiceID</code> with which previous registrations
were made through this utility.
<p>
The value input to the <code>serviceProxy</code> parameter represents
the new service reference (proxy) to register with each discovered
lookup service. If the <code>Object</code> input to that parameter is
not <code>Serializable</code>, an <code>IllegalArgumentException</code>
is thrown. If <code>null</code> is input to that parameter, a
<code>NullPointerException</code> is thrown.
<p>
The attribute sets that this method associates with the new service
reference are the same attribute sets as those associated with the
old registration.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceProxy</code> - the new service reference (proxy) to register with
all current and future discovered lookup services</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the object input to the
<code>serviceProxy</code> parameter is not serializable</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if <code>null</code> is input
to the <code>serviceProxy</code> parameter</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this method is called on
a terminated <code>JoinManager</code> instance. Note that this
exception is implementation-specific.</dd>
</dl>
</li>
</ul>
<a name="replaceRegistration-java.lang.Object-net.jini.core.entry.Entry:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replaceRegistration</h4>
<pre>public&nbsp;void&nbsp;replaceRegistration(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets)</pre>
<div class="block">Registers a new reference to the service with all current and future
discovered lookup services, applying semantics identical to the
one-argument form of this method, except with respect to the
registration of the given attribute sets.
<p>
This form of <code>replaceRegistration</code> takes as its
second parameter, an array of <code>Entry</code> objects
(<code>attrSets</code>), none of whose elements may be
<code>null</code>, that represents the new set of attributes to
associate with the new service reference to be registered. As with
the constructor to this utility, passing <code>null</code> as the
value of the <code>attrSets</code> parameter is equivalent to passing
an empty array. If any of the elements of <code>attrSets</code> are
<code>null</code>, a <code>NullPointerException</code> is thrown.
This new set of attributes will be associated with the service in
all future join processing.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serviceProxy</code> - the new service reference (proxy) to register with
all current and future discovered lookup services</dd>
<dd><code>attrSets</code> - array of <code>Entry</code> consisting of the
attribute sets with which to register the new
service reference. Passing <code>null</code> as
the value of this parameter is equivalent to
passing an empty <code>Entry</code> array</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the object input to the
<code>serviceProxy</code> parameter is not serializable</dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if either <code>null</code> is
input to the <code>serviceProxy</code> parameter, or at least
one of the elements of the <code>attrSets</code> parameter is
<code>null</code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if this method is called on
a terminated <code>JoinManager</code> instance. Note that this
exception is implementation-specific.</dd>
</dl>
</li>
</ul>
<a name="getConf-net.jini.config.Configuration-net.jini.lease.LeaseRenewalManager-net.jini.discovery.DiscoveryManagement-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConf</h4>
<pre>private static&nbsp;<a href="../../../net/jini/lookup/JoinManager.Conf.html" title="class in net.jini.lookup">JoinManager.Conf</a>&nbsp;getConf(<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</a>&nbsp;config,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy)
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a>,
<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></pre>
<div class="block">This method is for constructors that use an empty configuration.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>config</code> - </dd>
<dd><code>leaseMgr</code> - </dd>
<dd><code>discoveryMgr</code> - </dd>
<dd><code>serviceProxy</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Conf</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code></dd>
</dl>
</li>
</ul>
<a name="getConfig-net.jini.config.Configuration-net.jini.lease.LeaseRenewalManager-net.jini.discovery.DiscoveryManagement-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConfig</h4>
<pre>private static&nbsp;<a href="../../../net/jini/lookup/JoinManager.Conf.html" title="class in net.jini.lookup">JoinManager.Conf</a>&nbsp;getConfig(<a href="../../../net/jini/config/Configuration.html" title="interface in net.jini.config">Configuration</a>&nbsp;config,
<a href="../../../net/jini/lease/LeaseRenewalManager.html" title="class in net.jini.lease">LeaseRenewalManager</a>&nbsp;leaseMgr,
<a href="../../../net/jini/discovery/DiscoveryManagement.html" title="interface in net.jini.discovery">DiscoveryManagement</a>&nbsp;discoveryMgr,
<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy)
throws <a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config">ConfigurationException</a>,
<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a>,
<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></pre>
<div class="block">Gets the configuration and throws any exceptions.
This static method guards against finalizer attacks and allows fields
to be final.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>config</code> - </dd>
<dd><code>leaseMgr</code> - </dd>
<dd><code>discoveryMgr</code> - </dd>
<dd><code>serviceProxy</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Conf</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
<dd><code><a href="../../../net/jini/config/ConfigurationException.html" title="class in net.jini.config">ConfigurationException</a></code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code></dd>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code></dd>
</dl>
</li>
</ul>
<a name="findReg-net.jini.core.lookup.ServiceRegistrar-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findReg</h4>
<pre>private&nbsp;<a href="../../../net/jini/lookup/JoinManager.ProxyReg.html" title="class in net.jini.lookup">JoinManager.ProxyReg</a>&nbsp;findReg(<a href="../../../net/jini/core/lookup/ServiceRegistrar.html" title="interface in net.jini.core.lookup">ServiceRegistrar</a>&nbsp;proxy)</pre>
<div class="block">For the given lookup service proxy, searches the <code>joinSet</code>
for the corresponding <code>ProxyReg</code> element, and upon finding
such an element, returns that element; otherwise returns
<code>null</code>.</div>
</li>
</ul>
<a name="removeTasks-net.jini.lookup.JoinManager.ProxyReg-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeTasks</h4>
<pre>private&nbsp;void&nbsp;removeTasks(<a href="../../../net/jini/lookup/JoinManager.ProxyReg.html" title="class in net.jini.lookup">JoinManager.ProxyReg</a>&nbsp;proxyReg)</pre>
<div class="block">Removes (from the task manager) and cancels (in the wakeup manager)
all tasks associated with the given instance of <code>ProxyReg</code>.</div>
</li>
</ul>
<a name="terminateTaskMgr--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>terminateTaskMgr</h4>
<pre>private&nbsp;void&nbsp;terminateTaskMgr()</pre>
<div class="block">Removes from the task manager, all pending tasks regardless of the
the instance of <code>ProxyReg</code> with which the task is
associated, and then terminates the task manager, and makes it
a candidate for garbage collection.</div>
</li>
</ul>
<a name="testForNullElement-java.lang.Object:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testForNullElement</h4>
<pre>private&nbsp;void&nbsp;testForNullElement(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;a)</pre>
<div class="block">Examines the elements of the input set and, upon finding at least one
<code>null</code> element, throws a <code>NullPointerException</code>.</div>
</li>
</ul>
<a name="replaceRegistrationDo-java.lang.Object-net.jini.core.entry.Entry:A-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>replaceRegistrationDo</h4>
<pre>private&nbsp;void&nbsp;replaceRegistrationDo(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;serviceProxy,
<a href="../../../net/jini/core/entry/Entry.html" title="interface in net.jini.core.entry">Entry</a>[]&nbsp;attrSets,
boolean&nbsp;doAttrs)</pre>
<div class="block">Convenience method invoked by either form of the method
<code>replaceRegistration</code>. This method registers the
given <code>serviceProxy</code> with all discovered lookup
services, replacing all current registrations. If the value
of the <code>doAttrs</code> parameter is <code>true</code>,
this method will associate the given <code>attrSets</code>
with the new service registration; otherwise, it will use
the attribute sets currently associated with the old registration.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/JoinManager.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../net/jini/lookup/DiscoveryAdmin.html" title="interface in net.jini.lookup"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../net/jini/lookup/JoinManager.AddAttributesTask.html" title="class in net.jini.lookup"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?net/jini/lookup/JoinManager.html" target="_top">Frames</a></li>
<li><a href="JoinManager.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright 2007-2013, multiple authors.<br>Licensed under the <a href=http://www.apache.org/licenses/LICENSE-2.0 target=child >Apache License, Version 2.0</a>, see the <a href=../../../doc-files/NOTICE target=child >NOTICE</a> file for attributions.</small></p>
</body>
</html>