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

svn commit: r781470 [10/11] - /websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/

Added: websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/ServerEndpoint.html
==============================================================================
--- websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/ServerEndpoint.html (added)
+++ websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/ServerEndpoint.html Fri Dec 24 20:32:23 2010
@@ -0,0 +1,402 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_15) on Mon Mar 08 17:46:19 EST 2010 -->
+<TITLE>
+ServerEndpoint (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="net.jini.jeri.ServerEndpoint interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="ServerEndpoint (Apache River v2.1.2-SNAPSHOT API Documentation)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ServerEndpoint.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../net/jini/jeri/ServerCapabilities.html" title="interface in net.jini.jeri"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html" title="interface in net.jini.jeri"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html?net/jini/jeri/ServerEndpoint.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ServerEndpoint.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+net.jini.jeri</FONT>
+<BR>
+Interface ServerEndpoint</H2>
+<DL>
+<DT><B>All Superinterfaces:</B> <DD><A HREF="../../../net/jini/jeri/ServerCapabilities.html" title="interface in net.jini.jeri">ServerCapabilities</A></DD>
+</DL>
+<DL>
+<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../net/jini/jeri/http/HttpServerEndpoint.html" title="class in net.jini.jeri.http">HttpServerEndpoint</A>, <A HREF="../../../net/jini/jeri/ssl/HttpsServerEndpoint.html" title="class in net.jini.jeri.ssl">HttpsServerEndpoint</A>, <A HREF="../../../net/jini/jeri/kerberos/KerberosServerEndpoint.html" title="class in net.jini.jeri.kerberos">KerberosServerEndpoint</A>, <A HREF="../../../net/jini/jeri/ssl/SslServerEndpoint.html" title="class in net.jini.jeri.ssl">SslServerEndpoint</A>, <A HREF="../../../net/jini/jeri/tcp/TcpServerEndpoint.html" title="class in net.jini.jeri.tcp">TcpServerEndpoint</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public interface <B>ServerEndpoint</B><DT>extends <A HREF="../../../net/jini/jeri/ServerCapabilities.html" title="interface in net.jini.jeri">ServerCapabilities</A></DL>
+</PRE>
+
+<P>
+Represents one or more communication endpoints on the current
+ (local) host to listen for and receive requests on and a template
+ for producing an <code>Endpoint</code> instance to send requests to
+ those communication endpoints.
+
+ <p>A <code>ServerEndpoint</code> instance contains the information
+ necessary to listen for requests on the communication endpoints and
+ to produce <code>Endpoint</code> instances.  For example, a
+ TCP-based <code>ServerEndpoint</code> implementation typically
+ contains the TCP port to listen on and the host address to put in
+ the <code>Endpoint</code> instances it produces.  An implementation
+ that supports authentication typically contains the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/javax/security/auth/Subject.html" title="class or interface in javax.security.auth"><CODE>Subject</CODE></A>
+ (if any) to use for server authentication.
+
+ <p>The <A HREF="../../../net/jini/jeri/ServerEndpoint.html#enumerateListenEndpoints(net.jini.jeri.ServerEndpoint.ListenContext)"><CODE>enumerateListenEndpoints</CODE></A>
+ method can be invoked to
+
+ <ul>
+
+ <li>discover each of the discrete communication endpoints
+ represented by this <code>ServerEndpoint</code>, which are
+ individually represented as <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenEndpoint.html" title="interface in net.jini.jeri"><CODE>ListenEndpoint</CODE></A>
+ instances,
+
+ <li>ensure an active <i>listen operation</i> (see <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenEndpoint.html#listen(net.jini.jeri.RequestDispatcher)"><CODE>ListenEndpoint.listen</CODE></A>) on each discrete
+ communication endpoint by choosing, for each endpoint, either to
+ start a new listen operation or to use an existing one, and
+
+ <li>obtain an <code>Endpoint</code> instance that corresponds to
+ the chosen listen operations
+
+ </ul>
+
+ The obtained <code>Endpoint</code> instance can then be used to
+ send requests to the communication endpoints being listened on as a
+ result of that <A HREF="../../../net/jini/jeri/ServerEndpoint.html#enumerateListenEndpoints(net.jini.jeri.ServerEndpoint.ListenContext)"><CODE>enumerateListenEndpoints</CODE></A> invocation.
+
+ <p>Typically, a <code>ServerEndpoint</code> is just used to specify
+ the transport layer implementation to use when exporting a remote
+ object; for example, some constructors of <A HREF="../../../net/jini/jeri/BasicJeriExporter.html" title="class in net.jini.jeri"><CODE>BasicJeriExporter</CODE></A> have a <code>ServerEndpoint</code> parameter to
+ specify the transport layer implementation.  The exporter
+ implementation is then responsible for using the supplied
+ <code>ServerEndpoint</code> to manage listen operations as
+ necessary and to obtain an <code>Endpoint</code> instance for
+ putting in the client-side proxy.
+
+ <p>All aspects of the underlying communication mechanism that are
+ not specified here are defined by the particular implementation of
+ this interface.
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+  <DD>2.0</DD>
+<DT><B>Author:</B></DT>
+  <DD>Sun Microsystems, Inc.</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+<A NAME="nested_class_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Nested Class Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;interface</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html" title="interface in net.jini.jeri">ServerEndpoint.ListenContext</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A callback object for passing to <A HREF="../../../net/jini/jeri/ServerEndpoint.html#enumerateListenEndpoints(net.jini.jeri.ServerEndpoint.ListenContext)"><CODE>ServerEndpoint.enumerateListenEndpoints</CODE></A> to receive the
+ enumerated <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenEndpoint.html" title="interface in net.jini.jeri"><CODE>ListenEndpoint</CODE></A>
+ instances and to choose an active listen operation for each of
+ them on behalf of the caller of
+ <code>enumerateListenEndpoints</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;interface</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/ServerEndpoint.ListenCookie.html" title="interface in net.jini.jeri">ServerEndpoint.ListenCookie</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A cookie to identify a listen operation as the return value of
+ the <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html#addListenEndpoint(net.jini.jeri.ServerEndpoint.ListenEndpoint)"><CODE>ListenContext.addListenEndpoint</CODE></A> method.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;interface</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/ServerEndpoint.ListenEndpoint.html" title="interface in net.jini.jeri">ServerEndpoint.ListenEndpoint</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Represents a communication endpoint on the current (local) host
+ to listen for and receive requests on.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static&nbsp;interface</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/ServerEndpoint.ListenHandle.html" title="interface in net.jini.jeri">ServerEndpoint.ListenHandle</A></B></CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Represents a listen operation that has been started on a <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenEndpoint.html" title="interface in net.jini.jeri"><CODE>ListenEndpoint</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri">Endpoint</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/ServerEndpoint.html#enumerateListenEndpoints(net.jini.jeri.ServerEndpoint.ListenContext)">enumerateListenEndpoints</A></B>(<A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html" title="interface in net.jini.jeri">ServerEndpoint.ListenContext</A>&nbsp;listenContext)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumerates the communication endpoints represented by this
+ <code>ServerEndpoint</code> by passing the
+ <code>ListenEndpoint</code> for each of them to
+ <code>listenContext</code>, which will ensure an active listen
+ operation on each endpoint, and returns an
+ <code>Endpoint</code> instance corresponding to the listen
+ operations chosen by <code>listenContext</code>.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_net.jini.jeri.ServerCapabilities"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from interface net.jini.jeri.<A HREF="../../../net/jini/jeri/ServerCapabilities.html" title="interface in net.jini.jeri">ServerCapabilities</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../net/jini/jeri/ServerCapabilities.html#checkConstraints(net.jini.core.constraint.InvocationConstraints)">checkConstraints</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="enumerateListenEndpoints(net.jini.jeri.ServerEndpoint.ListenContext)"><!-- --></A><H3>
+enumerateListenEndpoints</H3>
+<PRE>
+<A HREF="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri">Endpoint</A> <B>enumerateListenEndpoints</B>(<A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html" title="interface in net.jini.jeri">ServerEndpoint.ListenContext</A>&nbsp;listenContext)
+                                  throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></PRE>
+<DL>
+<DD>Enumerates the communication endpoints represented by this
+ <code>ServerEndpoint</code> by passing the
+ <code>ListenEndpoint</code> for each of them to
+ <code>listenContext</code>, which will ensure an active listen
+ operation on each endpoint, and returns an
+ <code>Endpoint</code> instance corresponding to the listen
+ operations chosen by <code>listenContext</code>.
+
+ <p>This method uses <code>listenContext</code> to cooperate
+ with the caller to ensure the appropriate listen operations.
+ In this cooperation,
+
+ <ul>
+
+ <li>the <code>ServerEndpoint</code> is responsible for
+ declaring to the caller the discrete communication endpoints
+ represented by this <code>ServerEndpoint</code> as
+ <code>ListenEndpoint</code> instances passed to
+ <code>listenContext</code>'s <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html#addListenEndpoint(net.jini.jeri.ServerEndpoint.ListenEndpoint)"><CODE>addListenEndpoint</CODE></A> method, and
+
+ <li>the caller is responsible for declaring the active listen
+ operations to be used for this
+ <code>ServerEndpoint.enumerateListenEndpoints</code> invocation
+ corresponding to each discrete communication endpoint as <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenCookie.html" title="interface in net.jini.jeri"><CODE>ListenCookie</CODE></A> instances returned from
+ <code>listenContext</code>'s <code>addListenEndpoint</code>
+ method.
+
+ </ul>
+
+ For each <code>ListenEndpoint</code>, the caller (through
+ <code>listenContext</code>) may choose to start a new listen
+ operation, or it may choose to reuse a previously started
+ listen operation that it has a <code>ListenCookie</code> for.
+
+ <p>This method sequentially invokes
+ <code>addListenEndpoint</code> on <code>listenContext</code>
+ once for each discrete communication endpoint represented by
+ this <code>ServerEndpoint</code>, passing the
+ <code>ListenEndpoint</code> representing that communication
+ endpoint.  If any of the invocations of
+ <code>ListenContext.addListenEndpoint</code> throws an
+ exception, this method throws that exception.  Otherwise, this
+ method returns an <code>Endpoint</code> instance that sends
+ requests to be received by the listen operations chosen by
+ <code>listenContext</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>listenContext</CODE> - the <code>ListenContext</code> to pass
+ this <code>ServerEndpoint</code>'s <code>ListenEndpoint</code>
+ instances to
+<DT><B>Returns:</B><DD>the <code>Endpoint</code> instance for sending requests
+ to this <code>ServerEndpoint</code>'s communication endpoints
+ being listened on
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/IOException.html" title="class or interface in java.io">IOException</A></CODE> - if an I/O exception occurs while attempting
+ to listen for requests on the communication endpoints
+ represented by this <code>ServerEndpoint</code>.  This could
+ occur, for example, if an I/O resource associated with one of
+ the communication endpoints is already in exclusive use, or if
+ there are insufficient I/O resources for the operation.
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/SecurityException.html" title="class or interface in java.lang">SecurityException</A></CODE> - if the current security context does
+ not have the permissions necessary to listen for requests on
+ one of the communication endpoints represented by this
+ <code>ServerEndpoint</code>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if an invocation of the
+ <code>addListenEndpoint</code> method on the supplied
+ <code>ListenContext</code> returns a <code>ListenCookie</code>
+ that does not correspond to the <code>ListenEndpoint</code>
+ that was passed to it
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html" title="class or interface in java.lang">NullPointerException</A></CODE> - if <code>listenContext</code> is
+ <code>null</code></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ServerEndpoint.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../net/jini/jeri/ServerCapabilities.html" title="interface in net.jini.jeri"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html" title="interface in net.jini.jeri"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html?net/jini/jeri/ServerEndpoint.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="ServerEndpoint.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+Copyright 2007, 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.
+</BODY>
+</HTML>

Added: websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/package-frame.html
==============================================================================
--- websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/package-frame.html (added)
+++ websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/package-frame.html Fri Dec 24 20:32:23 2010
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_15) on Mon Mar 08 17:46:29 EST 2010 -->
+<TITLE>
+net.jini.jeri (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="net.jini.jeri package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../net/jini/jeri/package-summary.html" target="classFrame">net.jini.jeri</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Interfaces</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="Endpoint.html" title="interface in net.jini.jeri" target="classFrame"><I>Endpoint</I></A>
+<BR>
+<A HREF="InboundRequest.html" title="interface in net.jini.jeri" target="classFrame"><I>InboundRequest</I></A>
+<BR>
+<A HREF="InvocationDispatcher.html" title="interface in net.jini.jeri" target="classFrame"><I>InvocationDispatcher</I></A>
+<BR>
+<A HREF="InvocationLayerFactory.html" title="interface in net.jini.jeri" target="classFrame"><I>InvocationLayerFactory</I></A>
+<BR>
+<A HREF="ObjectEndpoint.html" title="interface in net.jini.jeri" target="classFrame"><I>ObjectEndpoint</I></A>
+<BR>
+<A HREF="OutboundRequest.html" title="interface in net.jini.jeri" target="classFrame"><I>OutboundRequest</I></A>
+<BR>
+<A HREF="OutboundRequestIterator.html" title="interface in net.jini.jeri" target="classFrame"><I>OutboundRequestIterator</I></A>
+<BR>
+<A HREF="RequestDispatcher.html" title="interface in net.jini.jeri" target="classFrame"><I>RequestDispatcher</I></A>
+<BR>
+<A HREF="ServerCapabilities.html" title="interface in net.jini.jeri" target="classFrame"><I>ServerCapabilities</I></A>
+<BR>
+<A HREF="ServerEndpoint.html" title="interface in net.jini.jeri" target="classFrame"><I>ServerEndpoint</I></A>
+<BR>
+<A HREF="ServerEndpoint.ListenContext.html" title="interface in net.jini.jeri" target="classFrame"><I>ServerEndpoint.ListenContext</I></A>
+<BR>
+<A HREF="ServerEndpoint.ListenCookie.html" title="interface in net.jini.jeri" target="classFrame"><I>ServerEndpoint.ListenCookie</I></A>
+<BR>
+<A HREF="ServerEndpoint.ListenEndpoint.html" title="interface in net.jini.jeri" target="classFrame"><I>ServerEndpoint.ListenEndpoint</I></A>
+<BR>
+<A HREF="ServerEndpoint.ListenHandle.html" title="interface in net.jini.jeri" target="classFrame"><I>ServerEndpoint.ListenHandle</I></A></FONT></TD>
+</TR>
+</TABLE>
+
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="AbstractILFactory.html" title="class in net.jini.jeri" target="classFrame">AbstractILFactory</A>
+<BR>
+<A HREF="BasicILFactory.html" title="class in net.jini.jeri" target="classFrame">BasicILFactory</A>
+<BR>
+<A HREF="BasicInvocationDispatcher.html" title="class in net.jini.jeri" target="classFrame">BasicInvocationDispatcher</A>
+<BR>
+<A HREF="BasicInvocationHandler.html" title="class in net.jini.jeri" target="classFrame">BasicInvocationHandler</A>
+<BR>
+<A HREF="BasicJeriExporter.html" title="class in net.jini.jeri" target="classFrame">BasicJeriExporter</A>
+<BR>
+<A HREF="BasicJeriTrustVerifier.html" title="class in net.jini.jeri" target="classFrame">BasicJeriTrustVerifier</A>
+<BR>
+<A HREF="BasicObjectEndpoint.html" title="class in net.jini.jeri" target="classFrame">BasicObjectEndpoint</A>
+<BR>
+<A HREF="InvocationLayerFactory.Instances.html" title="class in net.jini.jeri" target="classFrame">InvocationLayerFactory.Instances</A>
+<BR>
+<A HREF="ProxyTrustILFactory.html" title="class in net.jini.jeri" target="classFrame">ProxyTrustILFactory</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/package-summary.html
==============================================================================
--- websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/package-summary.html (added)
+++ websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/package-summary.html Fri Dec 24 20:32:23 2010
@@ -0,0 +1,959 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_15) on Mon Mar 08 17:46:29 EST 2010 -->
+<TITLE>
+net.jini.jeri (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="net.jini.jeri package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="net.jini.jeri (Apache River v2.1.2-SNAPSHOT API Documentation)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-use.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../net/jini/io/context/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../net/jini/jeri/connection/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html?net/jini/jeri/package-summary.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package net.jini.jeri
+</H2>
+Provides the fundamental abstractions and standard implementation
+classes for Jini extensible remote invocation (Jini ERI).
+<P>
+<B>See:</B>
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Interface Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri">Endpoint</A></B></TD>
+<TD>Represents a remote communication endpoint to send requests to.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/InboundRequest.html" title="interface in net.jini.jeri">InboundRequest</A></B></TD>
+<TD>Represents a request that is being received and the corresponding
+ response to be sent in reply.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/InvocationDispatcher.html" title="interface in net.jini.jeri">InvocationDispatcher</A></B></TD>
+<TD>An abstraction used to handle incoming call requests for a remote
+ object.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/InvocationLayerFactory.html" title="interface in net.jini.jeri">InvocationLayerFactory</A></B></TD>
+<TD>A factory for creating a compatible proxy and invocation dispatcher for
+ a remote object being exported.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri">ObjectEndpoint</A></B></TD>
+<TD>References a remote object at a remote communication endpoint to
+ send requests to.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri">OutboundRequest</A></B></TD>
+<TD>Represents a request that is being sent and the corresponding
+ response received in reply.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/OutboundRequestIterator.html" title="interface in net.jini.jeri">OutboundRequestIterator</A></B></TD>
+<TD>Produces <A HREF="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri"><CODE>OutboundRequest</CODE></A> instances to use for attempting to
+ send a particular request to a remote communication endpoint.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/RequestDispatcher.html" title="interface in net.jini.jeri">RequestDispatcher</A></B></TD>
+<TD>A callback object for processing inbound requests.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/ServerCapabilities.html" title="interface in net.jini.jeri">ServerCapabilities</A></B></TD>
+<TD>Represents the constraint support capabilities of a server-side
+ transport layer implementation.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/ServerEndpoint.html" title="interface in net.jini.jeri">ServerEndpoint</A></B></TD>
+<TD>Represents one or more communication endpoints on the current
+ (local) host to listen for and receive requests on and a template
+ for producing an <code>Endpoint</code> instance to send requests to
+ those communication endpoints.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html" title="interface in net.jini.jeri">ServerEndpoint.ListenContext</A></B></TD>
+<TD>A callback object for passing to <A HREF="../../../net/jini/jeri/ServerEndpoint.html#enumerateListenEndpoints(net.jini.jeri.ServerEndpoint.ListenContext)"><CODE>ServerEndpoint.enumerateListenEndpoints</CODE></A> to receive the
+ enumerated <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenEndpoint.html" title="interface in net.jini.jeri"><CODE>ListenEndpoint</CODE></A>
+ instances and to choose an active listen operation for each of
+ them on behalf of the caller of
+ <code>enumerateListenEndpoints</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/ServerEndpoint.ListenCookie.html" title="interface in net.jini.jeri">ServerEndpoint.ListenCookie</A></B></TD>
+<TD>A cookie to identify a listen operation as the return value of
+ the <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html#addListenEndpoint(net.jini.jeri.ServerEndpoint.ListenEndpoint)"><CODE>ListenContext.addListenEndpoint</CODE></A> method.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/ServerEndpoint.ListenEndpoint.html" title="interface in net.jini.jeri">ServerEndpoint.ListenEndpoint</A></B></TD>
+<TD>Represents a communication endpoint on the current (local) host
+ to listen for and receive requests on.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/ServerEndpoint.ListenHandle.html" title="interface in net.jini.jeri">ServerEndpoint.ListenHandle</A></B></TD>
+<TD>Represents a listen operation that has been started on a <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenEndpoint.html" title="interface in net.jini.jeri"><CODE>ListenEndpoint</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/AbstractILFactory.html" title="class in net.jini.jeri">AbstractILFactory</A></B></TD>
+<TD>An abstract implementation of <A HREF="../../../net/jini/jeri/InvocationLayerFactory.html" title="interface in net.jini.jeri"><CODE>InvocationLayerFactory</CODE></A> that
+ provides a convenient way for subclasses to create proxies and
+ invocation dispatchers for remote objects.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/BasicILFactory.html" title="class in net.jini.jeri">BasicILFactory</A></B></TD>
+<TD>A basic implementation of an <A HREF="../../../net/jini/jeri/InvocationLayerFactory.html" title="interface in net.jini.jeri"><CODE>InvocationLayerFactory</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/BasicInvocationDispatcher.html" title="class in net.jini.jeri">BasicInvocationDispatcher</A></B></TD>
+<TD>A basic implementation of the <A HREF="../../../net/jini/jeri/InvocationDispatcher.html" title="interface in net.jini.jeri"><CODE>InvocationDispatcher</CODE></A> interface,
+ providing preinvocation access control for
+ remote objects exported using <A HREF="../../../net/jini/jeri/BasicJeriExporter.html" title="class in net.jini.jeri"><CODE>BasicJeriExporter</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html" title="class in net.jini.jeri">BasicInvocationHandler</A></B></TD>
+<TD>A basic implementation of the <code>InvocationHandler</code> interface.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/BasicJeriExporter.html" title="class in net.jini.jeri">BasicJeriExporter</A></B></TD>
+<TD>An <code>Exporter</code> implementation for exporting
+ a remote object to use Jini extensible remote invocation
+ (Jini ERI).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/BasicJeriTrustVerifier.html" title="class in net.jini.jeri">BasicJeriTrustVerifier</A></B></TD>
+<TD>Trust verifier for dynamic proxies and object endpoints used in Jini
+ extensible remote invocation (Jini ERI).</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/BasicObjectEndpoint.html" title="class in net.jini.jeri">BasicObjectEndpoint</A></B></TD>
+<TD>References a remote object with an <A HREF="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri"><CODE>Endpoint</CODE></A> for
+ sending requests to the object and a <A HREF="../../../net/jini/id/Uuid.html" title="class in net.jini.id"><CODE>Uuid</CODE></A> to identify
+ the object at that <code>Endpoint</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/InvocationLayerFactory.Instances.html" title="class in net.jini.jeri">InvocationLayerFactory.Instances</A></B></TD>
+<TD>A container for the proxy and invocation dispatcher instances
+ returned by <A HREF="../../../net/jini/jeri/InvocationLayerFactory.html#createInstances(java.rmi.Remote, net.jini.jeri.ObjectEndpoint, net.jini.jeri.ServerCapabilities)"><CODE>InvocationLayerFactory.createInstances</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../net/jini/jeri/ProxyTrustILFactory.html" title="class in net.jini.jeri">ProxyTrustILFactory</A></B></TD>
+<TD>Invocation layer factory for remote objects exported to use Jini
+ extensible remote invocation (Jini ERI) that produces proxies that
+ additionally implement the <A HREF="../../../net/jini/security/proxytrust/ProxyTrust.html" title="interface in net.jini.security.proxytrust"><CODE>ProxyTrust</CODE></A> interface.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package net.jini.jeri Description
+</H2>
+
+<P>
+Provides the fundamental abstractions and standard implementation
+classes for Jini extensible remote invocation (Jini ERI).
+
+<p>Jini ERI is an implementation of the Java(TM) Remote Method
+Invocation (Java RMI) programming model that supports the following
+features:
+
+<ul>
+
+<li>The remote object export model defined in the <A HREF="../../../net/jini/export/package-summary.html"><CODE>net.jini.export</CODE></A> package
+
+<li>The invocation constraint and remote method control model defined
+in the <A HREF="../../../net/jini/core/constraint/package-summary.html"><CODE>net.jini.core.constraint</CODE></A> package
+
+<li>The trust model defined in the <A HREF="../../../net/jini/security/package-summary.html"><CODE>net.jini.security</CODE></A> package
+
+<li>Customization of client-side and server-side remote invocation
+behavior in a variety of ways, including customization of the content
+and format of the data communicated for remote invocations and pre-
+and post-invocation processing
+
+<li>Use of a variety of communication transports, including transports
+that are not connection-based and transports that are not IP-based
+
+<li>Use of dynamic proxy classes for client-side proxies, so that
+build-time generation of stub classes is not required
+
+<li>Optional use of distributed garbage collection
+
+<li>Control of all customizable features per exported remote object
+
+</ul>
+
+In addition, Jini ERI supports full Java RMI dynamic class loading
+semantics.
+
+<p>This package includes the standard class for exporting remote
+objects with Jini ERI, the interfaces that define the Jini ERI
+architectural elements, standard implementation classes for some of
+those interfaces, and a standard trust verifier class.
+
+<h2>Programming Model</h2>
+
+In general, applications are not expected to program directly to Jini
+ERI APIs for exporting remote objects; instead, applications should
+program to the <A HREF="../../../net/jini/export/Exporter.html" title="interface in net.jini.export"><CODE>Exporter</CODE></A> interface, and
+exporters should normally be obtained from a <A HREF="../../../net/jini/config/Configuration.html" title="interface in net.jini.config"><CODE>Configuration</CODE></A>.  The application developer should
+document the requirements that a given configurable exporter must
+satisfy, so that the application deployer can provide an exporter that
+meets those requirements.  See the <a
+href="../config/package-summary.html#Example"><code>net.jini.config</code>
+package documentation</a> for examples of configurable exporting.
+
+<p>Server-side remote method authorization checks should generally be
+implemented by the exporter, not by the remote object implementation,
+so that the authorization policy can be customized by the application
+deployer.
+
+<p>Clients should program to the <A HREF="../../../net/jini/core/constraint/RemoteMethodControl.html" title="interface in net.jini.core.constraint"><CODE>RemoteMethodControl</CODE></A> interface for setting
+invocation constraints on proxies and generally should not make
+assumptions about how proxies are implemented.
+
+<h2>Protocol Stack</h2>
+
+The Jini ERI architecture has a protocol stack with three layers as
+shown in the following table, with interfaces representing the
+abstractions of each layer on the client side and the server side as
+shown:
+
+<p>
+<table summary="Describes the three layers of the Jini ERI protocol stack"
+border=1 cellpadding=5 width="100%">
+    <tr>
+        <th>Layer
+        <th>Client-side abstractions
+        <th>Server-side abstractions
+    <tr>
+        <td>Invocation layer
+        <td><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/InvocationHandler.html" title="class or interface in java.lang.reflect"><CODE>InvocationHandler</CODE></A>
+        <td><A HREF="../../../net/jini/jeri/InvocationDispatcher.html" title="interface in net.jini.jeri"><CODE>InvocationDispatcher</CODE></A>
+    <tr>
+        <td>Object identification layer
+        <td><A HREF="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri"><CODE>ObjectEndpoint</CODE></A>
+        <td><A HREF="../../../net/jini/jeri/RequestDispatcher.html" title="interface in net.jini.jeri"><CODE>RequestDispatcher</CODE></A>
+  <tr>
+        <td>Transport layer
+        <td><A HREF="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri"><CODE>Endpoint</CODE></A>,
+            <A HREF="../../../net/jini/jeri/OutboundRequestIterator.html" title="interface in net.jini.jeri"><CODE>OutboundRequestIterator</CODE></A>,
+            <A HREF="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri"><CODE>OutboundRequest</CODE></A>
+        <td><A HREF="../../../net/jini/jeri/ServerCapabilities.html" title="interface in net.jini.jeri"><CODE>ServerCapabilities</CODE></A>,
+            <A HREF="../../../net/jini/jeri/ServerEndpoint.html" title="interface in net.jini.jeri"><CODE>ServerEndpoint</CODE></A>,
+            <A HREF="../../../net/jini/jeri/InboundRequest.html" title="interface in net.jini.jeri"><CODE>InboundRequest</CODE></A>
+</table>
+
+<p>The client-side and server-side implementations of each layer are
+chosen for a particular remote object as part of exporting the remote
+object.  The design is intended to allow plugging in different
+implementations of one layer without affecting the implementations of
+the other layers.
+
+<p>The client side abstractions correspond to the structure of the
+client-side proxy for a remote object exported with Jini ERI, with the
+invocation layer implementation containing the object identification
+layer implementation and that, in turn, containing the transport layer
+implementation.
+
+<p>Which invocation constraints are supported for remote invocations
+to a particular remote object exported with Jini ERI is partially
+dependent on the particular implementations of these layers used for
+the remote object (most especially the transport layer
+implementation).
+
+<h2>Exporter</h2>
+
+An <code>Exporter</code> exports a remote object and returns a proxy
+for making remote invocations on the exported remote object. The
+standard Jini ERI exporter class is <A HREF="../../../net/jini/jeri/BasicJeriExporter.html" title="class in net.jini.jeri"><CODE>BasicJeriExporter</CODE></A>, which is suitable for most
+applications.  <code>BasicJeriExporter</code> by itself exports
+non-activatable remote objects; to export an activatable remote object
+with Jini ERI, an <A HREF="../../../net/jini/activation/ActivationExporter.html" title="class in net.jini.activation"><CODE>ActivationExporter</CODE></A> can
+be used with a <code>BasicJeriExporter</code> as its underlying
+exporter.
+
+<p>A <code>BasicJeriExporter</code> is constructed with the
+information for controlling the client-side and server-side
+implementations of all layers of the Jini ERI protocol stack for the
+remote object to be exported:
+
+<ul>
+
+<li>An <A HREF="../../../net/jini/jeri/InvocationLayerFactory.html" title="interface in net.jini.jeri"><CODE>InvocationLayerFactory</CODE></A>, which is used to
+produce the proxy (containing an invocation handler) for the
+client-side invocation layer and the <code>InvocationDispatcher</code>
+for the server-side invocation layer
+
+<li>An object identifier (a <A HREF="../../../net/jini/id/Uuid.html" title="class in net.jini.id"><CODE>Uuid</CODE></A>) and flags for
+enabling DGC and controlling virtual machine liveness, which are used
+to construct a <A HREF="../../../net/jini/jeri/BasicObjectEndpoint.html" title="class in net.jini.jeri"><CODE>BasicObjectEndpoint</CODE></A> for the
+client-side object identification layer and to configure the
+<code>RequestDispatcher</code> for the server-side object
+identification layer
+
+<li>A <code>ServerEndpoint</code>, used for the server-side transport
+layer and used to produce the <code>Endpoint</code> for the
+client-side transport layer
+
+</ul>
+
+<code>BasicJeriExporter</code> implies use of a particular
+implementation of the object identification layer:
+<code>BasicObjectEndpoint</code> as the <code>ObjectEndpoint</code>
+implementation on the client side and an internal
+<code>RequestDispatcher</code> implementation on the server side.  The
+object identifier and flags of a <code>BasicJeriExporter</code>
+control features of this standard object identification layer
+implementation.  The nature of the object identification layer is such
+that the need to use a different implementation should be rare.  In
+order to use a different implementation of the object identification
+layer, a deployer needs to use a custom Jini ERI exporter class, which
+should support specifying an <code>InvocationLayerFactory</code> and
+<code>ServerEndpoint</code> for controlling the invocation and
+transport layer implementations.
+
+<p>For a given remote object exported with Jini ERI, the client-side
+and server-side counterparts at each layer of the protocol stack must
+be compatible in order for remote invocations to succeed.  At the
+transport layer, obtaining the client-side <code>Endpoint</code> from
+the supplied server-side <code>ServerEndpoint</code> ensures
+compatibility.  At the object identification layer,
+<code>BasicJeriExporter</code> always uses compatible
+<code>ObjectEndpoint</code> and <code>RequestDispatcher</code>
+implementations.  At the invocation layer, the
+<code>InvocationLayerFactory</code> abstraction is used to facilitate
+generation of compatible <code>InvocationHandler</code> and
+<code>InvocationDispatcher</code> pairs.
+
+<p>The proxy returned by a <code>BasicJeriExporter</code> (a Jini ERI
+proxy) is an instance of a dynamic proxy class with the following
+typical structure:
+
+<ul>
+    <li><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Proxy.html" title="class or interface in java.lang.reflect"><CODE>Proxy</CODE></A>
+    <ul>
+        <li><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/InvocationHandler.html" title="class or interface in java.lang.reflect"><CODE>InvocationHandler</CODE></A>
+        <ul>
+            <li><A HREF="../../../net/jini/jeri/BasicObjectEndpoint.html" title="class in net.jini.jeri"><CODE>BasicObjectEndpoint</CODE></A>
+            <ul>
+                <li><A HREF="../../../net/jini/jeri/Endpoint.html" title="interface in net.jini.jeri"><CODE>Endpoint</CODE></A>
+                <li>object identifier (<A HREF="../../../net/jini/id/Uuid.html" title="class in net.jini.id"><CODE>Uuid</CODE></A>)
+            </ul>
+            <li>client <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint"><CODE>MethodConstraints</CODE></A>
+            <li>server <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint"><CODE>MethodConstraints</CODE></A>
+        </ul>
+    </ul>
+</ul>
+
+The proxy object is ultimately created by the
+<code>InvocationLayerFactory</code> supplied to the exporter.  The
+proxy class typically implements all of the remote interfaces of the
+remote object's implementation class, plus
+<code>RemoteMethodControl</code> and any extra interfaces chosen by
+the factory.  The server constraints in the invocation handler are set
+by the factory, which typically allows specifying them with a
+constructor argument.  The client constraints are initially
+<code>null</code> and can be set using <A HREF="../../../net/jini/core/constraint/RemoteMethodControl.html#setConstraints(net.jini.core.constraint.MethodConstraints)"><CODE>RemoteMethodControl.setConstraints</CODE></A> on the proxy.
+
+<p>The <code>BasicObjectEndpoint</code> is constructed with the object
+identifier in the exporter and the <code>Endpoint</code>, which is
+obtained from the <code>ServerEndpoint</code> by invoking its <A HREF="../../../net/jini/jeri/ServerEndpoint.html#enumerateListenEndpoints(net.jini.jeri.ServerEndpoint.ListenContext)"><CODE>enumerateListenEndpoints</CODE></A> method.
+
+<h2>Invocation Layer</h2>
+
+The invocation layer deals with the concepts of methods, arguments,
+return values, and exceptions; marshalling and unmarshalling objects;
+and remote invocation semantics generally.  The invocation layer
+drives the remote invocation process on the client side.
+
+<p>On the client side, when a remote method is invoked on a Jini ERI
+proxy, it reflectively dispatches the method invocation to the
+contained invocation handler.  The invocation handler for a Jini ERI
+proxy typically performs the following steps to carry out its role in
+processing a remote call:
+
+<ul>
+
+<li>Compute the complete, absolute constraints for the remote call by
+combining <A HREF="../../../net/jini/core/constraint/InvocationConstraints.html" title="class in net.jini.core.constraint"><CODE>InvocationConstraints</CODE></A> for
+the invoked method from both the client and server <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint"><CODE>MethodConstraints</CODE></A> and converting relative
+time constraints to absolute time constraints.
+
+<li>Invoke the <code>ObjectEndpoint</code>'s <A HREF="../../../net/jini/jeri/ObjectEndpoint.html#newCall(net.jini.core.constraint.InvocationConstraints)"><CODE>newCall</CODE></A> method, passing the
+computed constraints, to obtain an
+<code>OutboundRequestIterator</code> to use to make attempts to
+communicate the remote call.
+
+<li>Obtain an <code>OutboundRequest</code> from the iterator to
+represent an attempt to communicate the remote call.
+
+<li>Enforce the constraints that the <code>OutboundRequest</code>
+indicates must be implemented by the invocation layer.
+
+<li>Create a marshal output stream (see <A HREF="../../../net/jini/io/MarshalOutputStream.html" title="class in net.jini.io"><CODE>MarshalOutputStream</CODE></A>) on top of the request output stream
+of the <code>OutboundRequest</code>.
+
+<li>Marshal an encoding of which remote method is being invoked.
+
+<li>Marshal the arguments.
+
+<li>Invoke the <code>ObjectEndpoint</code>'s <A HREF="../../../net/jini/jeri/ObjectEndpoint.html#executeCall(net.jini.jeri.OutboundRequest)"><CODE>executeCall</CODE></A> method to
+execute the remote call and wait for the response.
+
+<li>Create a marshal input stream (see <A HREF="../../../net/jini/io/MarshalInputStream.html" title="class in net.jini.io"><CODE>MarshalInputStream</CODE></A>) on top of the response input stream
+of the <code>OutboundRequest</code>.
+
+<li>Unmarshal the result of the remote call and return the return
+value or throw the exception as appropriate.
+
+<li>If a communication failure occurs and the remote call can be
+safely retried without violating <i>at most once</i> semantics, then
+if the iterator's <A HREF="../../../net/jini/jeri/OutboundRequestIterator.html#hasNext()"><CODE>hasNext</CODE></A> method returns <code>true</code>, obtain another
+<code>OutboundRequest</code> from the iterator and make another
+attempt to communicate the remote call.
+
+</ul>
+
+On the server side, when the <code>RequestDispatcher</code> receives a
+remote call request for a particular remote object, it dispatches that
+request to the <code>InvocationDispatcher</code> that the remote
+object was exported with, passing the remote object, an
+<code>InboundRequest</code> for performing I/O on the request, and a
+collection of server context elements.  An invocation dispatcher
+typically performs the following steps to carry out its role in
+processing a remote call:
+
+<ul>
+
+<li>Create a marshal input stream on top of the request input stream
+of the <code>InboundRequest</code>.
+
+<li>Unmarshal and decode which remote method is being invoked.
+
+<li>Verify that the server constraints for that method are satisfied
+by the transport layer, and enforce the constraints that the
+<code>InboundRequest</code> indicates must be implemented by the
+invocation layer.
+
+<li>Perform any authorization checks.
+
+<li>Unmarshal the arguments.
+
+<li>Reflectively invoke the method on the remote object implementation
+with those arguments.
+
+<li>Create a marshal output stream on top of the response output
+stream of the <code>InboundRequest</code>.
+
+<li>Marshal the return value or exception that resulted from invoking
+the method.
+
+</ul>
+
+Authorization checks are made before any arguments are unmarshalled in
+order to avoid denial of service attacks that could be mounted using
+serialization mechanisms or dynamically loaded classes.
+
+<p>If the <A HREF="../../../net/jini/core/constraint/Integrity.html#YES"><CODE>Integrity.YES</CODE></A>
+constraint is being enforced for a remote call, the marshal input
+streams created on both sides enforce <a
+href="../security/package-summary.html#code_integrity">code
+integrity</a> using <A HREF="../../../net/jini/security/Security.html#verifyCodebaseIntegrity(java.lang.String, java.lang.ClassLoader)"><CODE>Security.verifyCodebaseIntegrity</CODE></A>.
+
+<p><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html" title="class in net.jini.jeri"><CODE>BasicInvocationHandler</CODE></A> and <A HREF="../../../net/jini/jeri/BasicInvocationDispatcher.html" title="class in net.jini.jeri"><CODE>BasicInvocationDispatcher</CODE></A> are standard invocation
+handler and invocation dispatcher classes that are suitable for most
+applications.  Both <code>BasicInvocationHandler</code> and
+<code>BasicInvocationDispatcher</code> are designed to be extensible
+so that subclasses can augment or replace how many of the above steps
+are performed.  For example, a subclass could perform additional
+authorization checks based on the actual arguments; marshal or
+unmarshal data in an alternate context; perform pre- or
+post-processing on the arguments, return value, or exception; or
+cooperate with a corresponding subclass to marshal and unmarshal
+additional implicit data with a remote call.
+
+<p>As described above, the <code>InvocationLayerFactory</code>
+interface is an abstraction for an object that produces the
+client-side and server-side implementations of the invocation layer
+for a remote object at export time.  An
+<code>InvocationLayerFactory</code> must produce compatible
+client-side and server-side invocation layer implementations.  <A HREF="../../../net/jini/jeri/BasicILFactory.html" title="class in net.jini.jeri"><CODE>BasicILFactory</CODE></A> is a standard implementation of
+<code>InvocationLayerFactory</code> that produces a proxy with a
+<code>BasicInvocationHandler</code> and an invocation dispatcher that
+is a <code>BasicInvocationDispatcher</code>.  A
+<code>BasicILFactory</code> is sufficient when no customizations of
+<code>BasicInvocationHandler</code> and
+<code>BasicInvocationDispatcher</code> are desired.  Custom invocation
+handler and invocation dispatcher implementations (such as subclasses
+of <code>BasicInvocationHandler</code> and
+<code>BasicInvocationDispatcher</code>) can be used by passing a
+custom <code>InvocationLayerFactory</code> to the exporter.  <A HREF="../../../net/jini/jeri/AbstractILFactory.html" title="class in net.jini.jeri"><CODE>AbstractILFactory</CODE></A> is a convenience class for writing
+such custom <code>InvocationLayerFactory</code> implementations.
+
+<p>The authorization mechanism provided by
+<code>BasicInvocationDispatcher</code> uses the standard <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/Permission.html" title="class or interface in java.security"><CODE>Permission</CODE></A> model.  A permission class can be specified
+to the <code>BasicILFactory</code> constructor and is passed to the
+<code>BasicInvocationDispatcher</code> constructor at export time.
+The permission class is typically a simple subclass of <A HREF="../../../net/jini/security/AccessPermission.html" title="class in net.jini.security"><CODE>AccessPermission</CODE></A>.  The invocation dispatcher
+constructs an instance of the specified permission class based on the
+remote method being invoked.  For each incoming remote call, the
+client subject must be granted the permission for that remote method
+or the remote call will be refused.
+
+<h2>Object Identification Layer</h2>
+
+The object identification layer identifies distinct remote objects
+that are exported to a given transport endpoint and implements
+behavior that is specific to individual exported remote objects (but
+not to the remote invocation semantics of those objects), such as
+distributed garbage collection.
+
+<p>Typically, an <code>ObjectEndpoint</code> contains an object
+identifier for the remote object as well as the <code>Endpoint</code>
+for communicating requests to the remote object, and a
+<code>RequestDispatcher</code> contains a table mapping object
+identifiers to exported remote objects.
+
+<p>On the client side, an <code>ObjectEndpoint</code> typically
+prepends the object identifier to the remote call request data for
+reading by the corresponding <code>RequestDispatcher</code>.  The
+<code>executeCall</code> method typically reads from the beginning of
+the response an indication from the <code>RequestDispatcher</code> of
+whether or not the identified object was found, and if it was not,
+returns a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/NoSuchObjectException.html" title="class or interface in java.rmi"><CODE>NoSuchObjectException</CODE></A> for the remote
+invocation to throw.
+
+<p>On the server side, when the transport layer receives a request, it
+dispatches that request to the <code>RequestDispatcher</code> for the
+communication endpoint that the request was received on, passing an
+<code>InboundRequest</code> for performing I/O on the request.  The
+<code>RequestDispatcher</code> typically reads the object identifier
+from the beginning of the request data and looks for a remote object
+with that identifier in its table of exported objects.  If such an
+object is found, the associated <code>InvocationDispatcher</code> is
+invoked with the remote object, the <code>InboundRequest</code>, and a
+server context collection populated by the
+<code>InboundRequest</code>.  If no such object is found, an
+indication is written to the response output stream for reading by the
+corresponding <code>ObjectEndpoint</code>.
+
+<p>The invocation dispatcher is invoked inside an invocation of <A HREF="../../../net/jini/export/ServerContext.html#doWithServerContext(java.lang.Runnable, java.util.Collection)"><CODE>ServerContext.doWithServerContext</CODE></A> with an unmodifiable view of the
+server context collection described above, so that the context is
+available to the remote object implementation.
+
+<p><code>BasicJeriExporter</code> uses
+<code>BasicObjectEndpoint</code> instances for the client-side object
+identification layer implementation and instances of an internal
+<code>RequestDispatcher</code> class for the server-side object
+identification layer implementation.  This object identification layer
+implementation supports distributed garbage collection, as described
+below.
+
+<h2>Transport Layer</h2>
+
+The transport layer communicates requests and responses over the
+network.  The transport layer drives the dispatching of remote call
+requests on the server side, and thus it controls the server-side
+threading model.
+
+<p>The transport layer provides abstractions for
+request/response-based communication, where a request and its
+corresponding response are each a binary sequence of bytes.  While the
+transport communication is represented to higher layers as discrete
+requests and responses, connection-oriented communication will be a
+common implementation technique.  The <A HREF="../../../net/jini/jeri/connection/package-summary.html"><CODE>net.jini.jeri.connection</CODE></A>
+package provides support for implementing connection-based transport
+layer providers.
+
+<p>An <code>OutboundRequest</code> represents a request being sent,
+providing an <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/OutputStream.html" title="class or interface in java.io"><CODE>OutputStream</CODE></A> for writing the request and
+an <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html" title="class or interface in java.io"><CODE>InputStream</CODE></A> for reading the response.  An
+<code>InboundRequest</code> represents a request being received,
+providing an <code>InputStream</code> for reading the request and an
+<code>OutputStream</code> for writing the response.
+
+<p>The <code>ServerEndpoint</code> interface is the server-side
+transport layer abstraction for one or more communication endpoints on
+the local host to listen for and receive requests on.  The individual
+communication endpoints are represented as <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenEndpoint.html" title="interface in net.jini.jeri"><CODE>ListenEndpoint</CODE></A> instances
+during an invocation of the <A HREF="../../../net/jini/jeri/ServerEndpoint.html#enumerateListenEndpoints(net.jini.jeri.ServerEndpoint.ListenContext)"><CODE>ServerEndpoint.enumerateListenEndpoints</CODE></A> method.  A
+<code>ServerEndpoint</code> contains the network location for
+receiving remote call requests.  For example, a TCP-based
+<code>ServerEndpoint</code> typically contains the TCP port to bind
+to.  A <code>ServerEndpoint</code> that supports authentication
+typically contains the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/javax/security/auth/Subject.html" title="class or interface in javax.security.auth"><CODE>Subject</CODE></A> to use for
+server authentication.  The subject is normally obtained from the
+current thread when the server endpoint is constructed.
+
+<p>The <code>Endpoint</code> interface is the client-side transport
+layer abstraction for a remote communication endpoint to sent requests
+to.  An <code>Endpoint</code> contains the network location for the
+remote object.  For example, a TCP-based <code>Endpoint</code>
+typically contains the remote host address and TCP port to connect to.
+
+<p>The <code>enumerateListenEndpoints</code> method is invoked on a
+<code>ServerEndpoint</code> by an exporter at export time to start or
+reuse listen operations on the communication endpoints represented by
+the <code>ServerEndpoint</code>.  The exporter's <A HREF="../../../net/jini/jeri/ServerEndpoint.ListenContext.html" title="interface in net.jini.jeri"><CODE>ListenContext</CODE></A>, which is
+passed to <code>enumerateListenEndpoints</code>, starts new listen
+operations when necessary by passing a <code>RequestDispatcher</code>
+to the <code>ListenEndpoint</code> instances that are enumerated.  The
+<code>enumerateListenEndpoints</code> invocation returns an
+<code>Endpoint</code> that corresponds to the listen operations
+started or chosen by the exporter, and that <code>Endpoint</code> is
+used in the Jini ERI proxy produced by the export.  When a request is
+received for any active listen operation, an
+<code>InboundRequest</code> is created to communicate that request and
+is passed to the <code>RequestDispatcher</code> associated with the
+listen operation.
+
+<p>When the <A HREF="../../../net/jini/jeri/Endpoint.html#newRequest(net.jini.core.constraint.InvocationConstraints)"><CODE>Endpoint.newRequest</CODE></A> method is invoked to send a new request, it
+returns an <code>OutboundRequestIterator</code>, which may be able to
+produce one or more <code>OutboundRequest</code> instances for
+attempting to send the request.  <code>OutboundRequestIterator</code>
+is designed to allow an <code>Endpoint</code> implementation to offer
+multiple communication mechanism alternatives to try or to otherwise
+signal to higher layers that a request should be retried.
+
+<p>The <A HREF="../../../net/jini/jeri/tcp/package-summary.html"><CODE>net.jini.jeri.tcp</CODE></A> package provides transport over
+TCP/IP.  The <A HREF="../../../net/jini/jeri/http/package-summary.html"><CODE>net.jini.jeri.http</CODE></A> package provides HTTP
+transport over TCP/IP, for use through firewalls.  The <A HREF="../../../net/jini/jeri/ssl/package-summary.html"><CODE>net.jini.jeri.ssl</CODE></A> package provides two TLS/SSL-based transports:
+TLS/SSL transport over TCP/IP, and HTTPS (HTTP over TLS/SSL) transport
+over TCP/IP, for use through firewalls.  The <A HREF="../../../net/jini/jeri/kerberos/package-summary.html"><CODE>net.jini.jeri.kerberos</CODE></A> package provides Kerberos-based transport over
+TCP/IP.
+
+<h2>Invocation Constraints</h2>
+
+As described above, a Jini ERI proxy is typically an instance of
+<code>RemoteMethodControl</code> and contains client and server
+<code>MethodConstraints</code> for controlling the
+<code>InvocationConstraints</code> that apply to each remote method.
+When a remote method is invoked on the proxy, the invocation handler
+combines the <code>InvocationConstraints</code> for that method from
+the client and the server <code>MethodConstraints</code> and converts
+relative time constraints to absolute time constraints, to form the
+<code>InvocationConstraints</code> to use for the remote call.  If any
+of the requirements cannot be satisfied, the remote invocation throws
+an <A HREF="../../../net/jini/io/UnsupportedConstraintException.html" title="class in net.jini.io"><CODE>UnsupportedConstraintException</CODE></A>.
+
+<p>The server <code>MethodConstraints</code> are specified at export
+time, via the <code>InvocationLayerFactory</code> supplied to the
+exporter, and are stored in the invocation dispatcher on the server
+side and in the invocation handler on the client side.  The
+<code>ServerCapabilities</code> interface represents the server-side
+transport layer implementation to the invocation dispatcher for the
+purpose of verifying, at export time, that the entire implementation
+of the protocol stack supports the server constraints that that remote
+object is being exported with.  (Otherwise, constraint
+misconfigurations could go undetected on the server side.)
+<code>ServerEndpoint</code> extends <code>ServerCapabilities</code> so
+that an invocation dispatcher does not need to be programmed to the
+<code>ServerEndpoint</code> API explicitly.  At export time, the
+<code>ServerEndpoint</code> is passed to the
+<code>InvocationLayerFactory</code> as a
+<code>ServerCapabilities</code>, and the
+<code>InvocationDispatcher</code> created by the factory invokes
+<A HREF="../../../net/jini/jeri/ServerCapabilities.html#checkConstraints(net.jini.core.constraint.InvocationConstraints)"><CODE>ServerCapabilities.checkConstraints</CODE></A> with all possible
+<code>InvocationConstraints</code> in the server
+<code>MethodConstraints</code>.
+
+<p>The initial client <code>MethodConstraints</code> of a Jini ERI
+proxy, upon return from an exporter, are <code>null</code>.  Client
+<code>MethodConstraints</code> can be set for a Jini ERI proxy by
+invoking <code>RemoteMethodControl.setConstraints</code> on the proxy
+to obtain a new copy of the proxy with the specified client
+<code>MethodConstraints</code>.
+
+<p>Most constraints are fully implemented by the transport layer, but
+there is limited support for constraints being implemented by higher
+layers.  For any given constraint, there must be a clear delineation
+of which aspects (if any) must be implemented by the transport layer.
+Most of the constraints in the <A HREF="../../../net/jini/core/constraint/package-summary.html"><CODE>net.jini.core.constraint</CODE></A>
+package must be fully implemented by the transport layer; the one
+exception is <A HREF="../../../net/jini/core/constraint/Integrity.html" title="class in net.jini.core.constraint"><CODE>Integrity</CODE></A>, for which the
+transport layer is responsible for the data integrity aspect and the
+invocation layer is responsible for the code integrity aspect.
+
+<p>On both sides, the transport layer is first given the opportunity
+to implement the constraints in force for a given remote call.  The
+transport layer returns to the invocation layer any constraints that
+must be at least partially implemented by higher layers: on the client
+side, as the return value of <A HREF="../../../net/jini/jeri/OutboundRequest.html#getUnfulfilledConstraints()"><CODE>OutboundRequest.getUnfulfilledConstraints</CODE></A>, which is invoked by the
+invocation handler before marshalling the remote call, and on the
+server side, as the return value of <A HREF="../../../net/jini/jeri/InboundRequest.html#checkConstraints(net.jini.core.constraint.InvocationConstraints)"><CODE>InboundRequest.checkConstraints</CODE></A>, which is invoked by the invocation
+dispatcher before unmarshalling the remote call.
+
+<h2>Proxy Trust</h2>
+
+On the client side, secure proxies need to be <a
+href="../security/package-summary.html#proxy_trust">trusted</a> to
+correctly carry out remote calls.  In order to verify that a proxy can
+be trusted, a client passes it to <A HREF="../../../net/jini/security/Security.html#verifyObjectTrust(java.lang.Object, java.lang.ClassLoader, java.util.Collection)"><CODE>Security.verifyObjectTrust</CODE></A>, which uses locally configured <A HREF="../../../net/jini/security/TrustVerifier.html" title="interface in net.jini.security"><CODE>TrustVerifier</CODE></A> instances to determine if the proxy
+and (in recursive trust verification operations) its constituent
+objects can be trusted.
+
+<p><A HREF="../../../net/jini/jeri/BasicJeriTrustVerifier.html" title="class in net.jini.jeri"><CODE>BasicJeriTrustVerifier</CODE></A> can be used as a trust
+verifier for a Jini ERI proxy that uses
+<code>BasicInvocationHandler</code> and
+<code>BasicObjectEndpoint</code>, whose dynamic proxy class is defined
+by a locally trusted class loader, and whose server constraints and
+<code>Endpoint</code> are themselves trusted.  <A HREF="../../../net/jini/constraint/ConstraintTrustVerifier.html" title="class in net.jini.constraint"><CODE>ConstraintTrustVerifier</CODE></A> can be used as a trust
+verifier for instances of many standard constraint classes.  The
+<code>Endpoint</code> needs to be trusted to correctly carry out
+communication with all of the constraints that it supports; <A HREF="../../../net/jini/jeri/ssl/SslTrustVerifier.html" title="class in net.jini.jeri.ssl"><CODE>SslTrustVerifier</CODE></A> can be used as a trust verifier
+for <A HREF="../../../net/jini/jeri/ssl/SslEndpoint.html" title="class in net.jini.jeri.ssl"><CODE>SslEndpoint</CODE></A> and <A HREF="../../../net/jini/jeri/ssl/HttpsEndpoint.html" title="class in net.jini.jeri.ssl"><CODE>HttpsEndpoint</CODE></A> instances, and <A HREF="../../../net/jini/jeri/kerberos/KerberosTrustVerifier.html" title="class in net.jini.jeri.kerberos"><CODE>KerberosTrustVerifier</CODE></A> can be used as a trust
+verifier for <A HREF="../../../net/jini/jeri/kerberos/KerberosEndpoint.html" title="class in net.jini.jeri.kerberos"><CODE>KerberosEndpoint</CODE></A>
+instances.
+
+<p>Typically, the dynamic proxy class for a Jini ERI proxy received
+from a remote party will be defined by a class loader that is not
+directly trusted by <code>BasicJeriTrustVerifier</code> (or any other
+local trust verifier), so the proxy cannot be trusted directly by
+clients.  If a Jini ERI proxy satisfies all of
+<code>BasicJeriTrustVerifier</code>'s conditions for trust except the
+condition regarding its dynamic proxy class's loader, then (on the
+assumption that the parent of that loader will be locally trusted)
+<A HREF="../../../net/jini/security/proxytrust/ProxyTrustVerifier.html" title="class in net.jini.security.proxytrust"><CODE>ProxyTrustVerifier</CODE></A> can be used as
+a trust verifier for the proxy, with the proxy itself serving as the
+bootstrap proxy in <code>ProxyTrustVerifier</code>'s algorithm.  In
+order to support this intention, <A HREF="../../../net/jini/jeri/ProxyTrustILFactory.html" title="class in net.jini.jeri"><CODE>ProxyTrustILFactory</CODE></A> can be used to cause the proxy to
+be an instance of <A HREF="../../../net/jini/security/proxytrust/ProxyTrust.html" title="interface in net.jini.security.proxytrust"><CODE>ProxyTrust</CODE></A> (in
+addition to <code>RemoteMethodControl</code> and the remote object's
+remote interfaces) so that it qualifies as a bootstrap proxy, and then
+the remote object would implement <A HREF="../../../net/jini/security/proxytrust/ServerProxyTrust.html#getProxyVerifier()"><CODE>ServerProxyTrust.getProxyVerifier</CODE></A> to return a verifier for the proxy.
+
+<p>If a Jini ERI proxy that could be trusted by clients (perhaps by
+<code>ProxyTrustVerifier</code> as described previously) is contained
+within a proxy that will not be trusted directly by clients, then
+<code>ProxyTrustVerifier</code> can be used as a trust verifier for
+the outer proxy, with the contained Jini ERI proxy serving as the
+bootstrap proxy.  The outer proxy would need to be implemented to
+conform to the requirements of the algorithm specified by
+<code>ProxyTrustVerifier</code>, such as by having a
+<code>getProxyTrustIterator</code> method that returns an iterator
+that produces the Jini ERI proxy.  <code>ProxyTrustILFactory</code>
+can be used to cause the Jini ERI proxy to be an instance of
+<code>ProxyTrust</code>, and then the remote object would implement
+<code>ServerProxyTrust.getProxyVerifier</code> to return a verifier
+for the outer proxy.
+
+<p>If a Jini ERI proxy contains custom component objects (such as a
+custom invocation handler or custom <code>Endpoint</code>) that will
+not be trusted directly by clients, then <A HREF="../../../net/jini/security/proxytrust/ProxyTrustExporter.html" title="class in net.jini.security.proxytrust"><CODE>ProxyTrustExporter</CODE></A> can be used to
+combine that proxy with a trustable bootstrap proxy, such that the
+client can use <code>ProxyTrustVerifier</code> to verify that the
+aggregate proxy can be trusted.  The remote object would then
+implement <code>ServerProxyTrust.getProxyVerifier</code> to return a
+verifier for the aggregate proxy.  <code>ProxyTrustExporter</code> can
+be used similarly if a Jini ERI proxy containing custom component
+objects is contained within another proxy that will not be trusted
+directly by clients.
+
+<h2>Distributed Garbage Collection</h2>
+
+<code>BasicJeriExporter</code> supports exporting remote objects that
+participate in distributed garbage collection (DGC).
+
+<p>DGC uses a two-stage reference counting algorithm to maintain
+referential integrity across virtual machines, for remote objects
+exported with DGC enabled:
+
+<ul>
+
+<li>A client-side DGC implementation (called the <i>DGC client</i>)
+tracks the existence and reachability of live remote references
+(<code>BasicObjectEndpoint</code> instances that participate in DGC)
+for a <code>BasicObjectEndpoint</code> class in a given virtual
+machine.  When the number of live remote references to a given remote
+object transitions from zero to greater than zero, a <i>dirty call</i>
+is sent to the server-side DGC implementation associated with the
+remote object, indicating that the remote object is referenced by the
+client.  When the number transitions from greater than zero back to
+zero, a <i>clean call</i> is sent, indicating that the remote object
+is no longer referenced by the client.
+
+<li>A server-side DGC implementation tracks the number of DGC clients
+that are known to have live remote references to an exported remote
+object (according to dirty and clean calls received).  When that
+number is greater than zero, the implementation strongly references
+the exported remote object, preventing it from being garbage
+collected.  When that number is zero, the implementation only weakly
+references the exported remote object, so that it can be garbage
+collected (if it is not otherwise strongly reachable locally).  If the
+remote object is garbage collected, it becomes effectively unexported.
+
+</ul>
+
+<p>Because a reference counting algorithm is used, collection of
+unreachable cycles of remote references is not supported.
+
+<p>If a remote object that is an instance of <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/Unreferenced.html" title="class or interface in java.rmi.server"><CODE>Unreferenced</CODE></A> is exported with DGC enabled, then
+whenever the number of DGC clients that are known to have live remote
+references to the remote object transitions from greater than zero to
+zero, the remote object's <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/Unreferenced.html#unreferenced()" title="class or interface in java.rmi.server"><CODE>unreferenced</CODE></A> method is
+invoked (before the server-side implementation's strong reference is
+dropped).
+
+<p>The referential integrity of the live remote references tracked by
+a given DGC client to a given server-side DGC implementation is leased
+for finite durations of time.  The lease duration is chosen by the
+server-side implementation and conveyed in dirty call responses.  The
+DGC client is responsible for renewing its lease with the server (with
+successive dirty calls) as long as it has live remote references for
+that server.  If the server-side DGC implementation detects a lease
+expiration, it no longer considers the DGC client to have live remote
+references to any of its exported remote objects.  This leasing model
+is designed to allow server-side cleanup and garbage collection in the
+event of client failure, at the expense of possible loss of
+referential integrity in the event of communication failure.
+
+<p>See the <A HREF="../../../net/jini/jeri/BasicObjectEndpoint.html" title="class in net.jini.jeri"><CODE>BasicObjectEndpoint</CODE></A> and <A HREF="../../../net/jini/jeri/BasicJeriExporter.html" title="class in net.jini.jeri"><CODE>BasicJeriExporter</CODE></A> specifications for more information
+about client-side and server-side DGC processing.
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+  <DD>2.0</DD>
+<DT><B>Version:</B></DT>
+  <DD>3.0</DD>
+</DL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-use.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../net/jini/io/context/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../net/jini/jeri/connection/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../index.html?net/jini/jeri/package-summary.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+Copyright 2007, 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.
+</BODY>
+</HTML>