You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by bu...@apache.org on 2010/12/08 12:35:43 UTC
svn commit: r780268 [9/28] - in
/websites/staging/river/trunk/content/river/docs: ./ release-notes/ specs/
specs/images/
Added: websites/staging/river/trunk/content/river/docs/release-notes/servicediscovery.html
==============================================================================
--- websites/staging/river/trunk/content/river/docs/release-notes/servicediscovery.html (added)
+++ websites/staging/river/trunk/content/river/docs/release-notes/servicediscovery.html Wed Dec 8 11:35:41 2010
@@ -0,0 +1,663 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE- 2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+ <link href="/river/css/site.css" rel="stylesheet" type="text/css">
+ <link href="/river/css/type-settings.css" rel="stylesheet" type="text/css">
+
+ <title>Apache River - </title>
+
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+<body>
+<div class="white_box">
+<div class="header">
+ <div class="header_l">
+ <div class="header_r">
+ </div>
+ </div>
+</div>
+<div class="content">
+ <div class="content_l">
+ <div class="content_r">
+ <div>
+
+<!-- Banner -->
+
+
+ <div id="header_background">
+ <div id="river_logo">
+ <a href="/river"><img src="/river/images/apache_river_v2b_small.png"/></a>
+<img src="/river/images/apache-incubator-logo.png"/>
+
+ </div>
+ </div>
+
+ <table border="0">
+ <tbody>
+ <tr>
+ <td style="overflow: hidden;" valign="top" width="100%">
+ <div class="wiki-content">
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing, software
+ ! distributed under the License is distributed on an "AS IS" BASIS,
+ ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ! See the License for the specific language governing permissions and
+ ! limitations under the License.
+ !-->
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<body text="#000000" bgcolor="#ffffff" link="#9b37cc"
+ vlink="#cc1877" alink="#ffffff">
+
+<p><title>Jini Service Discovery Utilities Release Notes</title></p>
+<p><center>
+<h1>Jini Service Discovery Utilities
+ <BR>River v2.1.2 Release Notes
+</h1>
+</center>
+<HR>
+<UL>
+<H3>Description</H3></p>
+<p>The class
+<a href="../api/net/jini/lookup/ServiceDiscoveryManager.html"> <code>net.jini.lookup.ServiceDiscoveryManager</code></a>
+is a utility class that can be used to help a Jini technology-enabled
+service or client (<i>Jini service</i> or <i>Jini client</i>)
+acquire services of interest that are registered with lookup services
+with which the service or client wishes to interact.
+<p>
+The specification for the
+<a href="../api/net/jini/lookup/ServiceDiscoveryManager.html"> <code>ServiceDiscoveryManager</code></a>
+utility is contained in the <i>Jini Service Discovery Utilities Specification</i>,
+which is available in <a href="../specs/html/servicediscutil-spec.html">html</a>.
+<p></p>
+<H3>Changes since the v2.0.1 release</H3>
+
+<li>[<a href='https://issues.apache.org/jira/browse/RIVER-324'>RIVER-324</a>] -
+Under certain circumstances, the ServiceDiscoveryManager internal LookupCache
+implementation can incorrectly process attribute change events before the
+lookup snapshot is processed.
+</li>
+
+<H3>Changes since the v2.0.1 release</H3>
+
+<dl>
+ <dt> <b>Configuration</b>
+ <dd> In this release, no new configuration entries have been added, nor have any other
+ changes occurred with respect to the configuration.
+ <p>
+ A full list of supported configuration entries is given in this utility's
+ <a href="../api/net/jini/lookup/ServiceDiscoveryManager.html#sdmConfigEntries"> class documentation</a>.
+ <p>
+
+<dt> <b>Logging</b>
+ <dd> In this release, no changes have occurred with respect to the logging mechanism
+ employed by the service discovery manager implementation, which logs diagnostic information to the
+ <a href="http://java.sun.com/j2se/1.4/docs/api/java/util/logging/Logger.html"> <code>Logger</code></a>
+ named <code>net.jini.lookup.ServiceDiscoveryManager</code>. For a description of the
+ information that is logged, as well as the associated logging levels, refer to the
+ <a href="../api/net/jini/lookup/ServiceDiscoveryManager.html#sdmLogging"> class documentation</a>.
+ <p>
+
+<dt> <b>Bug Fixes of Interest</b>
+ <dd> A number of bugs have been addressed in this release of the
+ service discovery manager. What follows is a description of those
+ bugs that might be of interest:
+ <p>
+
+<dt><b>4972100: SDM NPE in getServiceItems when blocking lookup called before
+filter is applied</b><dt>
+ <dd> When one of the blocking versions of the <code>lookup</code> method is
+ invoked, there are conditions in which a <code>NullPointerException</code>
+ can occur. One possible scenario in which this bug can occur is as follows:
+
+<pre><code>SDM.lookup(duration)
+ SDM creates cache ----- RegisterListenerTask(wait for events)
+ LookupTask begins
+ get snapshot (lookup state)
+ -- done --
+wait(duration)
+ *** start targetted service ***
+ NOMATCH_MATCH event received
+ NotifyEventTask (process event)
+ NewOldServiceTask (new service)
+ addToMap -- (item,null)
+exit wait
+call cach.lookup()
+ filterMaybeDiscard()
+getServiceItems()
+map(item,null) ===> NPE
+ filter -- map(item,filteredItem)</code></pre>
+
+If the timing is right, <code>getServiceItems</code> can be entered
+ before the filter is applied and the non-<code>null</code>
+ <code>filteredItem</code> is placed in the map. If this occurs,
+ <code>getServiceItems</code> will attempt to access
+ <code>filteredItem.srvc</code>, which will result in a
+ <code>NullPointerException</code>.
+ </dd>
+ <p>
+ <dt><b>5102733: SDM cache.notifyServiceMap does not use event ID in its decision process</b><dt>
+ <dd> Prior to this release, in the method
+ <code>ServiceDiscoveryManager.LookupCacheImpl.notifyServiceMap</code>,
+ only the sequence number of the new event and the sequence number stored
+ in the <code>EventReg</code> element of the <code>eventRegMap</code> were compared when determining whether or not there is a "gap" in the event
+ sequence; in which case, a snapshot would be requested from the associated
+ lookup service. This could result in multiple unnecessary snapshots being requested; and thus, unnecessary network traffic and resource usage.
+ <p>
+ To understand how this problem could occur, consider the following scenario:
+
+<pre>1 activatable lookup service registered with Phoenix (or RMID)
+4 services registered with that lookup service
+1 client using a cache to discover the services
+
+>>> phoenix -stop (or rmid -stop) to stop the lookup service
+>>> all 4 services eventually discard the lookup service
+>>> the client eventually discards the lookup service
+>>> restart phoenix (or rmid) before 30 minutes have expired
+ (to restart the lookup service and recover its state before
+ the client's original event registration [E0] has a chance
+ to expire)</pre>
+
+When the client rediscovers the lookup service, its cache requests
+ a new event registration [E1]. But the lookup service still has E0
+ in its state.
+ <p>
+ When the services rediscover the lookup service, they reregister with
+ the lookup service, and the lookup service sends a serviceAdded
+ (<code>NOMATCH_MATCH</code>) event to both E0 and E1 for each of the
+ services. The cache's event listener receives both sets of events.
+ <p>
+ Prior to fixing this bug, <code>notifyServiceMap</code> only analyzed the sequence numbers of the events. It did not distinguish which event
+ registration each event corresponded to. Because E0 was recovered after
+ the lookup service went down and was restarted, the sequence numbers
+ of the events sent to that registration were greater than
+ <code>Integer.MAX_VALUE</code>, which resulted in a "gap" in the sequence so
+ that clients would know that they might have missed events. Because E1 was
+ not interrupted by a shutdown/restart, its sequence numbers started at 0. Thus, when serviceAdded events arrived for E0 and for E1, the sequence
+ looked something like the following to <code>notifyServiceMap</code>:
+
+<pre>event 0 --> Service0 added: Event ID = 0 - seq# 2147483650
+event 1 --> Service0 added: Event ID = 1 - seq# 0
+
+event 2 --> Service1 added: Event ID = 0 - seq# 2147483651
+event 3 --> Service1 added: Event ID = 1 - seq# 1
+
+event 4 --> Service2 added: Event ID = 0 - seq# 2147483652
+event 5 --> Service2 added: Event ID = 1 - seq# 2
+
+event 6 --> Service3 added: Event ID = 0 - seq# 2147483653
+event 7 --> Service3 added: Event ID = 1 - seq# 3</pre>
+
+Because <code>notifyServiceMap</code> did not consider the event ID,
+ it appeared to <code>notifyServiceMap</code> that it was receiving a
+ stream of events in which the sequence numbers looked like:
+
+<pre>{ 2147483650, 0, 2147483651, 1, 2147483652, 2, 2147483653, 3 }</pre>
+
+To <code>notifyServiceMap</code>, the sequence appeared to be
+ alternately "moving backward" and "moving forward" with a large
+ gap. In each case though, <code>notifyServiceMap</code> interpreted
+ the difference between sequence numbers as a gap; that is,
+
+<pre>(if event_(n+1)_seq# != 1 + event_n_seq#, then a gap is declared).</pre>
+
+Thus, as each event was received, <code>notifyServiceMap</code>
+ declared a gap, and a new snapshot was requested; which meant that for
+ the four services, there were eight total snapshots requested.
+
+To address this bug, the method <code>notifyServiceMap</code> was
+ modified to consider the event ID when determining whether or not
+ an event sequence contains a gap; which now results in the appropriate
+ behavior.
+ </dd>
+ <p>
+ <dt><b>6208587: SDM should create default LDM only when no DiscoveryManagement is configured</b><dt>
+ <dd> Prior to interrogating the configuration for a
+ <a href="../api/net/jini/discovery/DiscoveryManagement.html"> <code>DiscoveryManagement</code></a>
+ item (entry name = <b><i>discoveryManager</i></b>), a default
+ <a href="../api/net/jini/discovery/LookupDiscoveryManager.html"> <code>LookupDiscoveryManager</code></a>
+ is first created. Although that manager is initialized to discover no groups and no locators,
+ the <a href="../api/net/jini/discovery/LookupDiscovery.html"> <code>LookupDiscovery</code></a>
+ instance used by the default discovery manager to perform group discovery creates
+ a thread to listen for and process multicast announcements, as well as
+ additional, related threads. Thus, if a deployer configures a <i>discoveryManagement</i>
+ item, the creation of the default lookup discovery manager -- and the threads
+ that manager ultimately creates -- is unnecessary, and wastes resources.
+ <p>
+ This bug has been fixed.
+ </dd>
+ <p>
+ <dt> <b>Notes Of Interest</b>
+ <dd>
+ <p>
+ <b>Note 1: Service Reference Comparison</b>
+ <p>
+ The ability to appropriately compare two different service references
+ is very important to the
+ <a href="../api/net/jini/lookup/ServiceDiscoveryManager.html"> <code>ServiceDiscoveryManager</code></a>
+ in general, and the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ in particular. Currently, there are three mechanisms used to accurately
+ compare service references. Each mechanism is applied in different situations,
+ to achieve different goals.
+ <p>
+ When storing and managing service references, it is important to be able
+ to determine when two different references (proxies) refer to the same
+ back-end service (such references are referred to as <i>duplicates</i>)
+ so that the storage and management of any duplicate references can be
+ avoided. In addition to identifying duplicate references, the ability to
+ determine when a previously discovered service has been replaced with a
+ new version is also important so that consistent state may be maintained, and entities that wish to know about such events can be informed.
+ Finally, when an entity wishes to discard (make eligible for rediscovery)
+ a particular service reference received from the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>,
+ it is important for the <code>LookupCache</code> to be able to compare the
+ reference provided by the entity to each of the previously stored references
+ so that the appropriate reference can be accurately selected for discard. <p>
+ <b>Comparison by <a href="../api/net/jini/core/lookup/ServiceID.html"> <code>net.jini.core.lookup.ServiceID</code></a></b>
+ <p>
+ To identify, and thus avoid storing, duplicate service references, the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ compares the instances of <a href="../api/net/jini/core/lookup/ServiceID.html"> <code>ServiceID</code></a>
+ associated with each reference. Recall that an individual well-behaved service of
+ interest will usually register with multiple lookup services, and for
+ each lookup service with which that service registers, the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ will receive a separate event containing a reference to the service. When the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ receives events from multiple lookup services, the
+ <a href="../api/net/jini/core/lookup/ServiceID.html"> <code>ServiceID</code></a>
+ (retrieved from the service reference in the event) is used to distinguish the
+ service references from each other. In this way, when a new event arrives containing
+ a reference associated with the same service as an already-stored reference,
+ the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ can determine whether or not the new reference is a duplicate; in which case, the
+ duplicate is ignored.
+ <p>
+ <b>Comparison by <a href="../api/net/jini/io/MarshalledInstance.html"> <code>net.jini.io.MarshalledInstance.fullyEquals</code></a></b>
+ <p>
+ With respect to determining when a previously discovered service has been
+ replaced with a new version, the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a> typically relies
+ on the event mechanism of the lookup service(s) with which that service is
+ registered to indicate that such an event has occurred. But there are
+ situations where the events from the lookup services do not provide enough
+ information to make such a determination. In those cases, the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a> employs
+ <a href="../api/net/jini/io/MarshalledInstance.html"> <code>MarshalledInstance.fullyEquals</code></a>
+ to make the determination.
+ <p>
+ When a well-behaved service is replaced with a new version, the new
+ version is typically reregistered with each lookup service with
+ which the old version is registered. As described in the
+ <a href="../specs/html/lookup-spec.html"><i>Jini(TM) Lookup Service Specification</i></a>,
+ each lookup service with which this reregistration process occurs first
+ sends a service-removed event (<code>TRANSITION_MATCH_NOMATCH</code>), and
+ then sends a separate service-added event (<code>TRANSITION_NOMATCH_MATCH</code>).
+ In this case, there is no ambiguity, and thus no need for the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ to compare the new and old service references. This is because the
+ combination of service-removed and service-added events from each
+ lookup service is an explicit indication that the service has been
+ replaced. Note that, as described in the specification, the lookup
+ service only sends a service-changed event (<code>TRANSITION_MATCH_MATCH</code>)
+ when the attributes of the service have been modified; not when the
+ service itself has been changed (replaced). Thus, if the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ receives a <code>TRANSITION_MATCH_MATCH</code> event, then it is guaranteed
+ that the service referenced in that event has not been replaced with a new
+ version.
+ <p>
+ Whenever the following conditions are satisfied, the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ will use <a href="../api/net/jini/io/MarshalledInstance.html"> <code>MarshalledInstance.fullyEquals</code></a>
+ to compare two service references:
+ <p>
+ <ul>
+ <li> The references are duplicates (same <a href="../api/net/jini/core/lookup/ServiceID.html"> <code>ServiceID</code></a>)
+ <li> The <b><i>possibility</i></b> exists that the references may refer to different versions of the service
+ </ul>
+ <p>
+ When determining whether or not these conditions (in particular, the
+ second condition) are satisfied, the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a> generally
+ takes a conservative approach. That is, only when it is absolutely
+ sure that two duplicates refer to the same version (such as when a
+ <code>TRANSITION_MATCH_MATCH</code> event is received), will the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ refrain from using
+ <a href="../api/net/jini/io/MarshalledInstance.html"> <code>MarshalledInstance.fullyEquals</code></a>
+ to compare the duplicate references; otherwise, duplicate references are
+ always compared using
+ <a href="../api/net/jini/io/MarshalledInstance.html"> <code>MarshalledInstance.fullyEquals</code></a>.
+ <p>
+ One example of a situation where the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ employs <a href="../api/net/jini/io/MarshalledInstance.html"> <code>MarshalledInstance.fullyEquals</code></a>
+ is the situation
+ where a lookup service of interest is newly discovered or rediscovered.
+ In this situation, the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ retrieves a snapshot of the services of interest that currently reside in that
+ lookup service. This is done so that previously undiscovered service references,
+ as well as new versions of previously discovered service references, can
+ both be stored, duplicates can be ignored, and clients can be sent the
+ appropriate notifications. Whenever a reference from the snapshot is a
+ duplicate of a previously discovered service reference, the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ always compares the two references using
+ <a href="../api/net/jini/io/MarshalledInstance.html"> <code>MarshalledInstance.fullyEquals</code></a>.
+ This is because the possibility always exists that the references may refer to different
+ versions of the service.
+ <p>
+ Another example of a situation where the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ employs <a href="../api/net/jini/io/MarshalledInstance.html"> <code>MarshalledInstance.fullyEquals</code></a>
+ is when a <code>TRANSITION_NOMATCH_MATCH</code> event is received that
+ contains a reference that is a duplicate of a previously discovered
+ reference. When such an event is received, the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ must allow for the possibility that the reference contained
+ in the event refers to a different version of the service
+ than that referenced by the previously discovered service reference.
+ This is because the event may represent either the second half of a
+ <code>TRANSITION_MATCH_NOMATCH</code>/<code>TRANSITION_NOMATCH_MATCH</code>
+ (remove/add) event pair, or it may be a notification of the initial
+ registration of a new version of the service with one of the (multiple)
+ lookup services targeted by the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ during the service discovery process.
+ <p>
+ To understand the last example described above, consider the situation
+ where a service initially registers with one lookup service and then
+ registers with a second lookup service. If the same version of the
+ service is registered with each lookup service, both lookup services
+ will send the same event -- a <code>TRANSITION_NOMATCH_MATCH</code>
+ event -- to indicate that a new service has registered with the
+ associated lookup service. In this case, there is no ambiguity for the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>;
+ the second reference can be safely ignored because the references are
+ duplicates that refer to the exact same service.
+ <p>
+ But suppose that prior to registering with the second lookup service,
+ the service is replaced with a new version. In that case, the second
+ lookup service will still send a <code>TRANSITION_NOMATCH_MATCH</code> event, but
+ if the appropriate action is not taken to determine that the old version
+ of the service has been replaced, the new version of the service will
+ be ignored by the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>.
+ This is because the two references will have the same
+ <a href="../api/net/jini/core/lookup/ServiceID.html"> <code>ServiceID</code></a>,
+ and thus the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ will identify the two references as duplicates; ultimately ignoring the new reference.
+ Of course, if the service is well-behaved, because the new version of the service will
+ eventually reregister with the first lookup service, that lookup service
+will
+ eventually send a <code>TRANSITION_MATCH_NOMATCH</code> event followed by a
+ <code>TRANSITION_NOMATCH_MATCH</code> event to indicate that the service
+has been
+ replaced. But the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ must still identify and handle this situation in order to prevent possible state
+ corruption, even though that corruption may be only temporary.
+ <p>
+ Thus, whenever a <code>TRANSITION_NOMATCH_MATCH</code> event is received
+and the
+ associated service reference is a duplicate of a previously discovered
+ reference, the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ will always compare the two references using
+ <a href="../api/net/jini/io/MarshalledInstance.html"> <code>MarshalledInstance.fullyEquals</code></a>
+ to determine whether or not the references refer to the same version of the service.
+ When they do reference the same version, the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ ignores the duplicate reference; otherwise, the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ sends a service-removed event followed by a service-added event to indicate
+ that the old version of the service has been replaced.
+ <p>
+ <b>Comparison by <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#equals"> <code>equals</code></a></b>
+ <p>
+ The mechanism employed by the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a> to select (from
+ storage) a given reference for discard is the
+ <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#equals"> <code>equals</code></a>
+ method provided by the discovered service itself. The
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ relies on the provider of each service to override the
+ <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#equals"> <code>equals</code></a>
+ method with an implementation that allows
+ for the identification of the service reference an entity wishes to
+ be discarded. Although the default implementation of
+ <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#equals"> <code>equals</code></a>
+ often times may be sufficient for proper identification, service providers
+ are still encouraged to provide each service with its own well-defined
+ implementation of <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#equals"> <code>equals</code></a>.
+ <p>
+ In addition to the
+ <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#equals"> <code>equals</code></a>
+ method, each service should also
+ provide a proper implementation of the
+ <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#hashCode"> <code>hashCode</code></a> method.
+ This is because references to the service may be stored in, or interact with,
+ container classes (for example,
+ <a href="http://java.sun.com/j2se/1.4/docs/api/java/util/HashMap.html"> <code>HashMap</code></a>)
+ where the service's <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#equals"> <code>equals</code></a>
+ and <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#hashCode"> <code>hashCode</code></a>
+ methods may be invoked "under the covers" by the container object with
+ which the service is interacting. From the point of view of the
+ <a href="../api/net/jini/lookup/ServiceDiscoveryManager.html"> <code>ServiceDiscoveryManager</code></a>
+ and the <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>,
+ providing an appropriate implementation for both the
+ <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#equals"> <code>equals</code></a>
+ method and the
+ <a href="http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#hashCode"> <code>hashCode</code></a>
+ method is a key characteristic of good behavior in a Jini service.
+
+<p>
+ <b>Note 2: The Service Discovery Filtering Mechanism</b>
+ <p>
+ The specification of the
+ <a href="../api/net/jini/lookup/ServiceItemFilter.html"> <code>ServiceItemFilter</code></a>
+ interface specifies what it means to <i>filter</i> a service reference selected as a
+ candidate for discovery. In particular, instances of
+ <a href="../api/net/jini/lookup/ServiceItemFilter.html"> <code>ServiceItemFilter</code></a>
+ can be defined to perform proxy preparation. Thus, through the client-defined filter
+ (through the
+ <a href="../api/net/jini/lookup/ServiceItemFilter.html#check"> <code>check</code></a>
+ method), clients can request that the
+ <a href="../api/net/jini/lookup/ServiceDiscoveryManager.html"> <code>ServiceDiscoveryManager</code></a>,
+ rather than the client itself, perform any desired proxy preparation
+ as part of the service discovery process.
+ <p>
+ To understand why this is important, consider what can happen when
+ the client performs preparation of its discovered proxies outside of the
+ <a href="../api/net/jini/lookup/ServiceDiscoveryManager.html"> <code>ServiceDiscoveryManager</code></a>.
+ When proxy preparation is performed outside of the service discovery
+ manager, the client risks encountering a cycle where a matching service is
+ discovered by the
+ <a href="../api/net/jini/lookup/ServiceDiscoveryManager.html"> <code>ServiceDiscoveryManager</code></a>,
+ is found to be untrusted when the client prepares the proxy, is discarded by the client because it is untrusted, and is then ultimately rediscovered
+ because it still matches the original discovery criteria. Such a cycle
+ will generally repeat indefinitely because the service is not likely to
+ become trusted at any point in the future. Supplying the
+ <a href="../api/net/jini/lookup/ServiceDiscoveryManager.html"> <code>ServiceDiscoveryManager</code></a>
+ with the means to perform proxy preparation on the client's behalf
+ provides the client with a mechanism for avoiding such a cycle.
+ <p>
+ For more information, please refer to the section titled,
+ <i>SD.5.2 The <code>ServiceItemFilter</code> Interface</i>, contained in
+the
+ <a href="../specs/html/servicediscutil-spec.html"><i>Jini(TM) Service Discovery Utilities Specification</i></a>.
+
+<p>
+ <b>Note 3: The Service Discovery Event Mechanism</b>
+ <p>
+ The specification of the
+ <a href="../api/net/jini/lookup/ServiceDiscoveryListener.html"> <code>ServiceDiscoveryListener</code></a>
+ interface describes how the filtering mechanism and the event mechanism provided by instances of
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>net.jini.lookup.LookupCache</code></a>
+ interact.
+ <p>
+ Additionally, this specification specifies that instances of the
+ <a href="../api/net/jini/lookup/LookupCache.html"> <code>LookupCache</code></a>
+ use the method
+ <a href="../api/net/jini/io/MarshalledInstance.html"> <code>net.jini.io.MarshalledInstance.fullyEquals</code></a>
+ to determine when a service has changed in some fundamental way (for example,
+ when a service is replaced with a new version).
+ <p>
+ For more information, please refer to the section titled,
+ <i>SD.5.4 The <code>ServiceDiscoveryListener</code> Interface</i>, contained in the
+ <a href="../specs/html/servicediscutil-spec.html"><i>Jini(TM) Service Discovery Utilities Specification</i></a>
+ <p>
+</dl>
+
+<!-- No issues for now
+<p>
+<H3>Known Issues (& Workarounds)</H3>
+ Currently, there are no known issues regarding the <code>ServiceDiscoveryManager</code>
+ utility.
+<p>
+-->
+
+<p></ul>
+<hr>
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+<ul>
+ <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>
+</ul>
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.</p>
+<p></body>
+</html></p>
+ </div>
+ </td>
+ <td valign="top">
+ <div class="navigation">
+ <div class="navigation_top">
+ <div class="navigation_bottom">
+<!-- sidenav -->
+<ul>
+<li><a href="index.html">Home</a></li>
+<li><a href="news.html">News</a></li>
+</ul>
+<h3 id="community">Community</h3>
+<ul>
+<li><a href="supported-platforms.html">Supported platforms</a></li>
+<li><a href="get-involved.html">Get Involved</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+<li><a href="downloads.html">Downloads</a></li>
+<li>Documentation<ul>
+<li><a href="http://people.apache.org/~sijskes/doc/index.html">Original Jini Wiki</a></li>
+<li><a href="user-guide-glossary.html">Glossary</a></li>
+<li><a href="documentation.html">Cookbook</a></li>
+<li><a href="javadoc.html">Javadoc</a></li>
+</ul>
+</li>
+<li><a href="success-stories.html">Success Stories</a></li>
+<li><a href="mailing-lists.html">Mailing Lists</a></li>
+<li><a href="committers.html">Committers</a></li>
+<li><a href="found-a-bug.html">Found a Bug</a>?</li>
+</ul>
+<h3 id="development">Development</h3>
+<ul>
+<li><a href="javadoc.html">Javadoc</a></li>
+<li><a href="source-code.html">Source Code</a></li>
+<li><a href="building-river.html">Building River</a></li>
+<li><a href="roadmap.html">Roadmap</a></li>
+<li><a href="development-process.html">Development Process</a></li>
+<li><a href="https://issues.apache.org/jira/browse/RIVER">Issue Tracker</a></li>
+<li><a href="http://wiki.apache.org/river/">Wiki</a></li>
+</ul>
+<h3 id="search">Search</h3>
+<DIV>
+<FORM action="http://www.google.com/search" method="get" style="font-size: 10px;">
+<INPUT name="ie" type="hidden" value="UTF-8"></INPUT>
+<INPUT name="oe" type="hidden" value="UTF-8"></INPUT>
+ <INPUT maxlength="255" name="q" size="15" type="text" value></INPUT><BR></BR>
+ <INPUT name="btnG" type="submit" value="Search"></INPUT>
+ <INPUT name="domains" type="hidden" value="incubator.apache.org/river"></INPUT>
+ <INPUT name="sitesearch" type="hidden" value="incubator.apache.org/river"></INPUT>
+</FORM>
+</DIV>
+
+<ul>
+<li><a href="sitemap.html">Sitemap</a></li>
+</ul>
+<h3 id="the_foundation">The Foundation</h3>
+<ul>
+<li><a href="http://www.apache.org">Apache</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li>
+<li><a href="http://www.apache.org/foundation/how-it-works.html">How it works</a></li>
+<li><a href="http://incubator.apache.org/">Incubator</a></li>
+</ul>
+<!-- sidenav -->
+ </div>
+ </div>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+<!--
+ <div class="bottom_red_bar"></div>
+-->
+ </div>
+ </div>
+ </div>
+</div>
+<div class="black_box">
+<div class="footer">
+ <div class="footer_l">
+ <div class="footer_r">
+ <div>
+
+ </div>
+ </div>
+ </div>
+</div>
+</div>
+</div>
+<!--
+<div class="design_attribution">Page Template Design By Marc Prud'hommeaux based on <a href="http://activemq.apache.org/">ActiveMQ template</a></div>
+-->
+<div class="copyright_footer">
+<p>Copyright © 2010 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+</div>
+<script src="skeleton_files/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-1940143-1";
+urchinTracker();
+</script>
+
+</body></html>
Added: websites/staging/river/trunk/content/river/docs/release-notes/servicestarter.html
==============================================================================
--- websites/staging/river/trunk/content/river/docs/release-notes/servicestarter.html (added)
+++ websites/staging/river/trunk/content/river/docs/release-notes/servicestarter.html Wed Dec 8 11:35:41 2010
@@ -0,0 +1,298 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE- 2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+ <link href="/river/css/site.css" rel="stylesheet" type="text/css">
+ <link href="/river/css/type-settings.css" rel="stylesheet" type="text/css">
+
+ <title>Apache River - </title>
+
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+<body>
+<div class="white_box">
+<div class="header">
+ <div class="header_l">
+ <div class="header_r">
+ </div>
+ </div>
+</div>
+<div class="content">
+ <div class="content_l">
+ <div class="content_r">
+ <div>
+
+<!-- Banner -->
+
+
+ <div id="header_background">
+ <div id="river_logo">
+ <a href="/river"><img src="/river/images/apache_river_v2b_small.png"/></a>
+<img src="/river/images/apache-incubator-logo.png"/>
+
+ </div>
+ </div>
+
+ <table border="0">
+ <tbody>
+ <tr>
+ <td style="overflow: hidden;" valign="top" width="100%">
+ <div class="wiki-content">
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing, software
+ ! distributed under the License is distributed on an "AS IS" BASIS,
+ ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ! See the License for the specific language governing permissions and
+ ! limitations under the License.
+ !-->
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+
+<p><body text="#000000" bgcolor="#ffffff" link="#9b37cc"
+ vlink="#cc1877" alink="#ffffff">
+<a name="top">
+<title>Release Notes for Service Starter</title></p>
+<p><center>
+<h1><code>com.sun.jini.start</code><br>
+Apache River v2.1.2 Release Notes</h1>
+</center>
+<HR>
+<UL>
+<H3>Description</H3>
+The Service Starter package is a collection of utilities and APIs
+used to launch the contributed services provided in the
+Apache River release.</p>
+<H3>Changes since the v2.1.1 release</H3>
+<dl>
+ <dt> <b>None</b></dt>
+
+</dl>
+
+<H3>Changes since the v2.0.1 release</H3>
+<dl>
+ <dt> <b>Bug Fixes of Interest</b></dt>
+ <dd> The following bugs have been addressed in this release:
+ <p>
+ <dl>
+ <dt><b>
+ 4835830: Add per-service proxy preparer support
+ </b></dt>
+ <dd>Per-service proxy preparer support has been added to
+ <code>NonActivatableServiceDescriptor</code> and
+ <code>SharedActivatableServiceDescriptor</code> via constructor
+ overloads that take proxy preparer parameters. This allows users
+ to individually prepare the service proxies returned by service
+ starter framework.
+ <P>
+ <dt><b>
+ 4856937: Service starter should permit specifying dynamic policy provider
+ </b></dt>
+ <dd><code>ActivateWrapper</code> supports the
+ the <code>java.security.Security</code> property
+ <code>com.sun.jini.start.servicePolicyProvider</code>, which allows users
+ to specify the fully qualified class name of a dynamic policy provider to
+ use for wrapping individual service policies in a "shared" environment.
+ A custom service policy provider can be very useful when trying to
+ debug security related issues. See the start package documentation for
+ more detail.
+ <P>
+ <dt><b>
+ 4858623: change ExportClassLoader to use context class loader for parent
+ </b></dt>
+ <dd><code>ActivateWrapper.ExportClassLoader</code> now uses the calling context's
+ class loader as its parent (versus the application classpath, used previously).
+ This allows "container" applications more control over the class loader
+ hierarchy used when launching services.
+ <P>
+ <dt><b>
+ 6211452: change ActivateWrapper.ExportClassLoader to subclass PreferredClassLoader
+ </b></dt>
+ <dd><code>ActivateWrapper.ExportClassLoader</code> now extends
+ <code>PreferredClassLoader</code> instead of <code>URLClassLoader</code>.
+ A service can now specify a preferred list for its import class path,
+ to ensure that any classes that need to be annotated with the server's
+ codebase get loaded by the server's class loader rather than accidentally
+ being resolved in the container.
+ <P>
+ <dt><b>
+ 4868839: Make utility class constructors private
+ </b></dt>
+ <dd>The following utility classes simply contain static methods and
+ are not meant to be instantiated:
+ <UL>
+ <LI><code>ClassLoaderUtil</code>
+ <LI><code>DestroySharedGroup</code>
+ <LI><code>HTTPDStatus</code>
+ </UL>
+ To ensure this, private constructors have been added to each of the
+ above classes.
+ <P>
+ <dt><b>
+ 4936006: ServiceDescriptor's should support non-file-based classpath entries
+ </b></dt>
+ <dd>The <code>importCodebase</code> parameter in the constructors for
+ <code>NonActivatableServiceDescriptor</code> and
+ <code>SharedActivatableServiceDescriptor</code> now support either:
+ <UL>
+ <LI>a space delimited set of <code>URL</code>(s) representing a codebase or
+ <LI>a <code>File.pathSeparator</code> delimited set of class paths.
+ <UL>
+ <P>
+</dl>
+
+<!-- N/A
+<p>
+<H3>Known Issues (& Workarounds)</H3>
+<p>
+-->
+
+</ul>
+<hr>
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+<ul>
+ <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>
+</ul>
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+</body>
+</html>
+ </div>
+ </td>
+ <td valign="top">
+ <div class="navigation">
+ <div class="navigation_top">
+ <div class="navigation_bottom">
+<!-- sidenav -->
+<ul>
+<li><a href="index.html">Home</a></li>
+<li><a href="news.html">News</a></li>
+</ul>
+<h3 id="community">Community</h3>
+<ul>
+<li><a href="supported-platforms.html">Supported platforms</a></li>
+<li><a href="get-involved.html">Get Involved</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+<li><a href="downloads.html">Downloads</a></li>
+<li>Documentation<ul>
+<li><a href="http://people.apache.org/~sijskes/doc/index.html">Original Jini Wiki</a></li>
+<li><a href="user-guide-glossary.html">Glossary</a></li>
+<li><a href="documentation.html">Cookbook</a></li>
+<li><a href="javadoc.html">Javadoc</a></li>
+</ul>
+</li>
+<li><a href="success-stories.html">Success Stories</a></li>
+<li><a href="mailing-lists.html">Mailing Lists</a></li>
+<li><a href="committers.html">Committers</a></li>
+<li><a href="found-a-bug.html">Found a Bug</a>?</li>
+</ul>
+<h3 id="development">Development</h3>
+<ul>
+<li><a href="javadoc.html">Javadoc</a></li>
+<li><a href="source-code.html">Source Code</a></li>
+<li><a href="building-river.html">Building River</a></li>
+<li><a href="roadmap.html">Roadmap</a></li>
+<li><a href="development-process.html">Development Process</a></li>
+<li><a href="https://issues.apache.org/jira/browse/RIVER">Issue Tracker</a></li>
+<li><a href="http://wiki.apache.org/river/">Wiki</a></li>
+</ul>
+<h3 id="search">Search</h3>
+<DIV>
+<FORM action="http://www.google.com/search" method="get" style="font-size: 10px;">
+<INPUT name="ie" type="hidden" value="UTF-8"></INPUT>
+<INPUT name="oe" type="hidden" value="UTF-8"></INPUT>
+ <INPUT maxlength="255" name="q" size="15" type="text" value></INPUT><BR></BR>
+ <INPUT name="btnG" type="submit" value="Search"></INPUT>
+ <INPUT name="domains" type="hidden" value="incubator.apache.org/river"></INPUT>
+ <INPUT name="sitesearch" type="hidden" value="incubator.apache.org/river"></INPUT>
+</FORM>
+</DIV>
+
+<ul>
+<li><a href="sitemap.html">Sitemap</a></li>
+</ul>
+<h3 id="the_foundation">The Foundation</h3>
+<ul>
+<li><a href="http://www.apache.org">Apache</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li>
+<li><a href="http://www.apache.org/foundation/how-it-works.html">How it works</a></li>
+<li><a href="http://incubator.apache.org/">Incubator</a></li>
+</ul>
+<!-- sidenav -->
+ </div>
+ </div>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+<!--
+ <div class="bottom_red_bar"></div>
+-->
+ </div>
+ </div>
+ </div>
+</div>
+<div class="black_box">
+<div class="footer">
+ <div class="footer_l">
+ <div class="footer_r">
+ <div>
+
+ </div>
+ </div>
+ </div>
+</div>
+</div>
+</div>
+<!--
+<div class="design_attribution">Page Template Design By Marc Prud'hommeaux based on <a href="http://activemq.apache.org/">ActiveMQ template</a></div>
+-->
+<div class="copyright_footer">
+<p>Copyright © 2010 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+</div>
+<script src="skeleton_files/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-1940143-1";
+urchinTracker();
+</script>
+
+</body></html>
Added: websites/staging/river/trunk/content/river/docs/simpleproxyverification.pdf
==============================================================================
Binary file - no diff available.
Propchange: websites/staging/river/trunk/content/river/docs/simpleproxyverification.pdf
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: websites/staging/river/trunk/content/river/docs/smartproxyverification.pdf
==============================================================================
Binary file - no diff available.
Propchange: websites/staging/river/trunk/content/river/docs/smartproxyverification.pdf
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: websites/staging/river/trunk/content/river/docs/spec-index.html
==============================================================================
--- websites/staging/river/trunk/content/river/docs/spec-index.html (added)
+++ websites/staging/river/trunk/content/river/docs/spec-index.html Wed Dec 8 11:35:41 2010
@@ -0,0 +1,317 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE- 2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+ <link href="/river/css/site.css" rel="stylesheet" type="text/css">
+ <link href="/river/css/type-settings.css" rel="stylesheet" type="text/css">
+
+ <title>Apache River - </title>
+
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+<body>
+<div class="white_box">
+<div class="header">
+ <div class="header_l">
+ <div class="header_r">
+ </div>
+ </div>
+</div>
+<div class="content">
+ <div class="content_l">
+ <div class="content_r">
+ <div>
+
+<!-- Banner -->
+
+
+ <div id="header_background">
+ <div id="river_logo">
+ <a href="/river"><img src="/river/images/apache_river_v2b_small.png"/></a>
+<img src="/river/images/apache-incubator-logo.png"/>
+
+ </div>
+ </div>
+
+ <table border="0">
+ <tbody>
+ <tr>
+ <td style="overflow: hidden;" valign="top" width="100%">
+ <div class="wiki-content">
+<!--
+ ! Licensed to the Apache Software Foundation (ASF) under one
+ ! or more contributor license agreements. See the NOTICE file
+ ! distributed with this work for additional information
+ ! regarding copyright ownership. The ASF licenses this file
+ ! to you under the Apache License, Version 2.0 (the
+ ! "License"); you may not use this file except in compliance
+ ! with the License. You may obtain a copy of the License at
+ !
+ ! http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing, software
+ ! distributed under the License is distributed on an "AS IS" BASIS,
+ ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ! See the License for the specific language governing permissions and
+ ! limitations under the License.
+ !-->
+
+<p><title>Jini Specifications</title></p>
+<body text="#000000" bgcolor="#ffffff" link="#9b37cc"
+ vlink="#cc1877" alink="#ffffff">
+
+<h1><center>Jini(TM) Network Technology Specifications<br>Apache River v2.1.2</center></h1>
+
+<UL>
+<p>
+The following specifications are available in HTML in this v2.1.2 release.
+
+</P>
+<p>
+The existing specifications were accepted as standards of the Jini Community(SM)
+through the Jini Community Decision Process (JDP) and have been inherited by the
+Apache River project. Modifications are
+to be expected based on learnings from Apache River's continued development.
+</P>
+ <ul>
+ <li><i><a href="specs/html/discovery-spec.html">
+ Jini Discovery and Join Specification</i></a>
+ <li><i><a href="specs/html/entry-spec.html">
+ Jini Entry Specification</i></a>
+ <li><i><a href="specs/html/lease-spec.html">
+ Jini Distributed Leasing Specification</i></a>
+ <li><i><a href="specs/html/event-spec.html">
+ Jini Distributed Events Specification</i></a>
+ <li><i><a href="specs/html/txn-spec.html">
+ Jini Transaction Specification</i></a>
+ <li><i><a href="specs/html/lookup-spec.html">
+ Jini Lookup Service Specification</i></a>
+ </ul></ul>
+
+<p><HR>
+<p><br />
+ <ul><ul>
+ <li><i><a href="specs/html/jxpnote-spec.html">
+ Introduction to Helper Utilities and Services</i></a>
+ <li><i><a href="specs/html/discoveryutil-spec.html">
+ Jini Discovery Utilities Specification</i></a><br />
+ <li><i><a href="specs/html/leaseutil-spec.html">
+ Jini Lease Utilities Specification</i></a>
+ <li><i><a href="specs/html/joinutil-spec.html">
+ Jini Join Utilities Specification</i></a>
+ <li><i><a href="specs/html/servicediscutil-spec.html">
+ Jini Service Discovery Utilities Specification</i></a>
+ <li><i><a href="specs/html/schema-spec.html">
+ Jini Lookup Attribute Schema Specification</i></a>
+ <li><i><a href="specs/html/lds-spec.html">
+ Jini Lookup Discovery Service Specification</i></a>
+ <li><i><a href="specs/html/lrs-spec.html">
+ Jini Lease Renewal Service Specification</i></a>
+ <li><i><a href="specs/html/mailbox-spec.html">
+ Jini Event Mailbox Service Specification</i></a>
+ </ul></ul>
+<HR>
+ <ul><ul>
+ <li><a href="specs/html/js-spec.html"><i>
+ JavaSpaces Service Specification</i></a>
+ </ul></ul>
+<HR>
+ <ul><ul>
+ <li><a href="specs/html/serviceui-spec.html"><i>
+ ServiceUI Specification</i></a>
+ </ul></ul>
+<HR>
+<UL><UL></p>
+<div class="codehilite"><pre><span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/activation/package-summary.html"</span><span class="nt">></span> net.jini.activation<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/config/package-summary.html"</span><span class="nt">></span> net.jini.config<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/constraint/package-summary.html"</span><span class="nt">></span> net.jini.constraint<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/core/constraint/package-summary.html"</span><span class="nt">></span> net.jini.core.constraint<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/entry/package-summary.html"</span><span class="nt">></span> net.jini.entry<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/export/package-summary.html"</span><span class="nt">></span> net.jini.export<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/id/package-summary.html"</span><span class="nt">></span> net.jini.id<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/iiop/package-summary.html"</span><span class="nt">></span> net.jini.iiop<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/io/package-summary.html"</span><span class="nt">></span> net.jini.io<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/io/context/package-summary.html"</span><span class="nt">></span> net.jini.io.context<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/jeri/package-summary.html"</span><span class="nt">></span> net.jini.jeri<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/jeri/connection/package-summary.html"</span><span class="nt">></span> net.jini.jeri.connection<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/jeri/http/package-summary.html"</span><span class="nt">></span> net.jini.jeri.http<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/jeri/kerberos/package-summary.html"</span><span class="nt">></span> net.jini.jeri.kerberos<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/jeri/ssl/package-summary.html"</span><span class="nt">></span> net.jini.jeri.ssl<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/jeri/tcp/package-summary.html"</span><span class="nt">></span> net.jini.jeri.tcp<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/jrmp/package-summary.html"</span><span class="nt">></span> net.jini.jrmp<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/loader/package-summary.html"</span><span class="nt">></span> net.jini.loader<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/loader/pref/package-summary.html"</span><span class="nt">></span> net.jini.loader.pref<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/security/package-summary.html"</span><span class="nt">></span> net.jini.security<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/security/policy/package-summary.html"</span><span class="nt">></span> net.jini.security.policy<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/security/proxytrust/package-summary.html"</span><span class="nt">></span> net.jini.security.proxytrust<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/space/package-summary.html"</span><span class="nt">></span> JavaSpace05 extension<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/url/file/package-summary.html"</span><span class="nt">></span> net.jini.url.file<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/url/httpmd/package-summary.html"</span><span class="nt">></span> net.jini.url.httpmd<span class="nt"></i></a></span>
+
+<span class="nt"><LI><i><a</span> <span class="na">href=</span><span class="s">"specs/api/net/jini/url/https/package-summary.html"</span><span class="nt">></span> net.jini.url.https<span class="nt"></i></a></span>
+</pre></div>
+
+
+<p></UL></UL></UL>
+<hr>
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+<ul>
+ <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>
+</ul>
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.</p>
+<p></body>
+</html></p>
+ </div>
+ </td>
+ <td valign="top">
+ <div class="navigation">
+ <div class="navigation_top">
+ <div class="navigation_bottom">
+<!-- sidenav -->
+<ul>
+<li><a href="index.html">Home</a></li>
+<li><a href="news.html">News</a></li>
+</ul>
+<h3 id="community">Community</h3>
+<ul>
+<li><a href="supported-platforms.html">Supported platforms</a></li>
+<li><a href="get-involved.html">Get Involved</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+<li><a href="downloads.html">Downloads</a></li>
+<li>Documentation<ul>
+<li><a href="http://people.apache.org/~sijskes/doc/index.html">Original Jini Wiki</a></li>
+<li><a href="user-guide-glossary.html">Glossary</a></li>
+<li><a href="documentation.html">Cookbook</a></li>
+<li><a href="javadoc.html">Javadoc</a></li>
+</ul>
+</li>
+<li><a href="success-stories.html">Success Stories</a></li>
+<li><a href="mailing-lists.html">Mailing Lists</a></li>
+<li><a href="committers.html">Committers</a></li>
+<li><a href="found-a-bug.html">Found a Bug</a>?</li>
+</ul>
+<h3 id="development">Development</h3>
+<ul>
+<li><a href="javadoc.html">Javadoc</a></li>
+<li><a href="source-code.html">Source Code</a></li>
+<li><a href="building-river.html">Building River</a></li>
+<li><a href="roadmap.html">Roadmap</a></li>
+<li><a href="development-process.html">Development Process</a></li>
+<li><a href="https://issues.apache.org/jira/browse/RIVER">Issue Tracker</a></li>
+<li><a href="http://wiki.apache.org/river/">Wiki</a></li>
+</ul>
+<h3 id="search">Search</h3>
+<DIV>
+<FORM action="http://www.google.com/search" method="get" style="font-size: 10px;">
+<INPUT name="ie" type="hidden" value="UTF-8"></INPUT>
+<INPUT name="oe" type="hidden" value="UTF-8"></INPUT>
+ <INPUT maxlength="255" name="q" size="15" type="text" value></INPUT><BR></BR>
+ <INPUT name="btnG" type="submit" value="Search"></INPUT>
+ <INPUT name="domains" type="hidden" value="incubator.apache.org/river"></INPUT>
+ <INPUT name="sitesearch" type="hidden" value="incubator.apache.org/river"></INPUT>
+</FORM>
+</DIV>
+
+<ul>
+<li><a href="sitemap.html">Sitemap</a></li>
+</ul>
+<h3 id="the_foundation">The Foundation</h3>
+<ul>
+<li><a href="http://www.apache.org">Apache</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li>
+<li><a href="http://www.apache.org/foundation/how-it-works.html">How it works</a></li>
+<li><a href="http://incubator.apache.org/">Incubator</a></li>
+</ul>
+<!-- sidenav -->
+ </div>
+ </div>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+<!--
+ <div class="bottom_red_bar"></div>
+-->
+ </div>
+ </div>
+ </div>
+</div>
+<div class="black_box">
+<div class="footer">
+ <div class="footer_l">
+ <div class="footer_r">
+ <div>
+
+ </div>
+ </div>
+ </div>
+</div>
+</div>
+</div>
+<!--
+<div class="design_attribution">Page Template Design By Marc Prud'hommeaux based on <a href="http://activemq.apache.org/">ActiveMQ template</a></div>
+-->
+<div class="copyright_footer">
+<p>Copyright © 2010 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+</div>
+<script src="skeleton_files/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-1940143-1";
+urchinTracker();
+</script>
+
+</body></html>