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 [4/11] - /websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/

Added: websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/BasicInvocationHandler.html
==============================================================================
--- websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/BasicInvocationHandler.html (added)
+++ websites/staging/river/trunk/content/river/doc/api/net/jini/jeri/BasicInvocationHandler.html Fri Dec 24 20:32:23 2010
@@ -0,0 +1,1265 @@
+<!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:18 EST 2010 -->
+<TITLE>
+BasicInvocationHandler (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="net.jini.jeri.BasicInvocationHandler class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="BasicInvocationHandler (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/BasicInvocationHandler.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/BasicInvocationDispatcher.html" title="class in net.jini.jeri"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../net/jini/jeri/BasicJeriExporter.html" title="class 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/BasicInvocationHandler.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BasicInvocationHandler.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;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&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>
+Class BasicInvocationHandler</H2>
+<PRE>
+<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
+  <IMG SRC="../../../resources/inherit.gif" ALT="extended by "><B>net.jini.jeri.BasicInvocationHandler</B>
+</PRE>
+<DL>
+<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>, <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">InvocationHandler</A>, <A HREF="../../../net/jini/security/proxytrust/TrustEquivalence.html" title="interface in net.jini.security.proxytrust">TrustEquivalence</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public class <B>BasicInvocationHandler</B><DT>extends <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A><DT>implements <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">InvocationHandler</A>, <A HREF="../../../net/jini/security/proxytrust/TrustEquivalence.html" title="interface in net.jini.security.proxytrust">TrustEquivalence</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A></DL>
+</PRE>
+
+<P>
+A basic implementation of the <code>InvocationHandler</code> interface.
+ This invocation handler implements Java(TM) Remote Method Invocation
+ (Java RMI) call semantics when handling
+ a remote invocation to a remote object.
+
+ <p><code>BasicInvocationHandler</code> instances contain an
+ <code>ObjectEndpoint</code>, optional client constraints, and
+ optional server constraints.  The client and server constraints
+ control the handling of remote methods, and they are represented as
+ <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint"><CODE>MethodConstraints</CODE></A> objects that map remote methods to
+ corresponding per-method constraints.
+
+ <p>Invocation requests sent via the <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])"><CODE>invoke</CODE></A> method use
+ the protocol defined in that method.  This invocation handler also
+ assumes that the return value conforms to the protocol outlined in the
+ <A HREF="../../../net/jini/jeri/BasicInvocationDispatcher.html#dispatch(java.rmi.Remote, net.jini.jeri.InboundRequest, java.util.Collection)"><CODE>BasicInvocationDispatcher.dispatch</CODE></A> method.
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+  <DD>2.0</DD>
+<DT><B>Author:</B></DT>
+  <DD>Sun Microsystems, Inc.</DD>
+<DT><B>See Also:</B><DD><A HREF="../../../net/jini/jeri/BasicInvocationDispatcher.html" title="class in net.jini.jeri"><CODE>BasicInvocationDispatcher</CODE></A>, 
+<A HREF="../../../serialized-form.html#net.jini.jeri.BasicInvocationHandler">Serialized Form</A><DT><B>Implementation Specifics:</B></DT>
+  <DD>This implementation's <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])"><CODE>invoke</CODE></A> method throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang"><CODE>IllegalArgumentException</CODE></A> if a remote invocation is to be made and
+ the <code>proxy</code> argument is an instance of an interface
+ whose binary name is
+ <code>javax.management.MBeanServerConnection</code> or any of the
+ names produced by the following procedure:
+
+ <blockquote>
+
+ For each resource named
+ <code>com/sun/jini/proxy/resources/InvocationHandler.moreProhibitedProxyInterfaces</code>
+ that is visible to the system class loader, the contents of the
+ resource are parsed as UTF-8 text to produce a list of interface
+ names.  The resource must contain a list of binary names of
+ interfaces, one per line.  Space and tab characters surrounding
+ each name, as well as blank lines, are ignored.  The comment
+ character is <tt>'#'</tt>; on each line, all characters starting
+ with the first comment character are ignored.
+
+ </blockquote>
+
+ <p>This implementation uses the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Logger.html" title="class or interface in java.util.logging"><CODE>Logger</CODE></A> named
+ <code>net.jini.jeri.BasicInvocationHandler</code> to log
+ information at the following levels:
+
+ <table summary="Describes what is logged by BasicInvocationHandler at
+        various logging levels" border=1 cellpadding=5>
+
+ <tr> <th> Level <th> Description
+
+ <tr> <td> <A HREF="../../../com/sun/jini/logging/Levels.html#FAILED"><CODE>FAILED</CODE></A> <td> exception thrown from final
+ attempt to communicate a remote call
+ 
+ <tr> <td> <A HREF="../../../com/sun/jini/logging/Levels.html#HANDLED"><CODE>HANDLED</CODE></A> <td> exception caught in
+ attempt to communicate a remote call
+
+ <tr> <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINE" title="class or interface in java.util.logging"><CODE>FINE</CODE></A> <td> remote method being invoked
+
+ <tr> <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINE" title="class or interface in java.util.logging"><CODE>FINE</CODE></A> <td> successful return of remote call
+
+ <tr> <td> <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html#FINEST" title="class or interface in java.util.logging"><CODE>FINEST</CODE></A> <td> more detailed information on
+ the above (for example, actual argument and return values) 
+
+ </table></DD>
+</DL>
+<HR>
+
+<P>
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_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>Constructor Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#BasicInvocationHandler(net.jini.jeri.BasicInvocationHandler, net.jini.core.constraint.MethodConstraints)">BasicInvocationHandler</A></B>(<A HREF="../../../net/jini/jeri/BasicInvocationHandler.html" title="class in net.jini.jeri">BasicInvocationHandler</A>&nbsp;other,
+                       <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A>&nbsp;clientConstraints)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new <code>BasicInvocationHandler</code> with the
+ specified client constraints and with the same
+ <code>ObjectEndpoint</code> and server constraints as the given
+ other <code>BasicInvocationHandler</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#BasicInvocationHandler(net.jini.jeri.ObjectEndpoint, net.jini.core.constraint.MethodConstraints)">BasicInvocationHandler</A></B>(<A HREF="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri">ObjectEndpoint</A>&nbsp;oe,
+                       <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A>&nbsp;serverConstraints)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new <code>BasicInvocationHandler</code> with the
+ specified <code>ObjectEndpoint</code> and server constraints.</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;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#checkTrustEquivalence(java.lang.Object)">checkTrustEquivalence</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns <code>true</code> if the specified object (which is not
+ yet known to be trusted) is equivalent in trust, content, and
+ function to this known trusted object, and <code>false</code>
+ otherwise.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#createMarshalInputStream(java.lang.Object, java.lang.reflect.Method, net.jini.jeri.OutboundRequest, boolean, java.util.Collection)">createMarshalInputStream</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                         <A HREF="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri">OutboundRequest</A>&nbsp;request,
+                         boolean&nbsp;integrity,
+                         <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a new <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><CODE>ObjectInputStream</CODE></A> instance to use to read
+ objects from the response input stream obtained by invoking the <A HREF="../../../net/jini/jeri/OutboundRequest.html#getResponseInputStream()"><CODE>getResponseInputStream</CODE></A> method
+ on the given <code>request</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#createMarshalOutputStream(java.lang.Object, java.lang.reflect.Method, net.jini.jeri.OutboundRequest, java.util.Collection)">createMarshalOutputStream</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                          <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                          <A HREF="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri">OutboundRequest</A>&nbsp;request,
+                          <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a new <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><CODE>ObjectOutputStream</CODE></A> instance to use to write
+ objects to the request output stream obtained by invoking the <A HREF="../../../net/jini/jeri/OutboundRequest.html#getRequestOutputStream()"><CODE>getRequestOutputStream</CODE></A> method
+ on the given <code>request</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#equals(java.lang.Object)">equals</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;obj)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compares the specified object with this
+ <code>BasicInvocationHandler</code> for equality.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#getClientConstraints()">getClientConstraints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this <code>BasicInvocationHandler</code>'s client
+ constraints.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri">ObjectEndpoint</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#getObjectEndpoint()">getObjectEndpoint</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this <code>BasicInvocationHandler</code>'s
+ <code>ObjectEndpoint</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#getServerConstraints()">getServerConstraints</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns this <code>BasicInvocationHandler</code>'s server
+ constraints.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#hashCode()">hashCode</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the hash code value for this invocation handler.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])">invoke</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+       <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+       <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;args)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Processes a method invocation made on the encapsulating
+ proxy instance, <code>proxy</code>, and returns the result.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#marshalArguments(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], java.io.ObjectOutputStream, java.util.Collection)">marshalArguments</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                 <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                 <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;args,
+                 <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A>&nbsp;out,
+                 <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Marshals the arguments for the specified remote method to the outgoing
+ request stream, <code>out</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#marshalMethod(java.lang.Object, java.lang.reflect.Method, java.io.ObjectOutputStream, java.util.Collection)">marshalMethod</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+              <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+              <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A>&nbsp;out,
+              <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Marshals a representation of the given <code>method</code> to
+ the outgoing request stream, <code>out</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<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">InvocationHandler</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#setClientConstraints(net.jini.core.constraint.MethodConstraints)">setClientConstraints</A></B>(<A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A>&nbsp;constraints)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a copy of this invocation handler with the specified
+ constraints as its new client constraints.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#toString()">toString</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a string representation of this
+ <code>BasicInvocationHandler</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#unmarshalReturn(java.lang.Object, java.lang.reflect.Method, java.io.ObjectInputStream, java.util.Collection)">unmarshalReturn</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A>&nbsp;in,
+                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unmarshals the return value for the specified remote method from the
+ incoming response stream, <code>in</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#unmarshalThrow(java.lang.Object, java.lang.reflect.Method, java.io.ObjectInputStream, java.util.Collection)">unmarshalThrow</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+               <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+               <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A>&nbsp;in,
+               <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Unmarshals the throwable for the specified remote method from the
+ incoming response stream, <code>in</code>, and returns the result.</TD>
+</TR>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.4.2/
 docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_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>Constructor Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="BasicInvocationHandler(net.jini.jeri.ObjectEndpoint, net.jini.core.constraint.MethodConstraints)"><!-- --></A><H3>
+BasicInvocationHandler</H3>
+<PRE>
+public <B>BasicInvocationHandler</B>(<A HREF="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri">ObjectEndpoint</A>&nbsp;oe,
+                              <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A>&nbsp;serverConstraints)</PRE>
+<DL>
+<DD>Creates a new <code>BasicInvocationHandler</code> with the
+ specified <code>ObjectEndpoint</code> and server constraints.
+
+ <p>The client constraints of the created
+ <code>BasicInvocationHandler</code> will be <code>null</code>.
+<P>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>oe</CODE> - the <code>ObjectEndpoint</code> for this invocation handler<DD><CODE>serverConstraints</CODE> - the server constraints, or <code>null</code>
+<DT><B>Throws:</B>
+<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>oe</code> is <code>null</code></DL>
+</DL>
+<HR>
+
+<A NAME="BasicInvocationHandler(net.jini.jeri.BasicInvocationHandler, net.jini.core.constraint.MethodConstraints)"><!-- --></A><H3>
+BasicInvocationHandler</H3>
+<PRE>
+public <B>BasicInvocationHandler</B>(<A HREF="../../../net/jini/jeri/BasicInvocationHandler.html" title="class in net.jini.jeri">BasicInvocationHandler</A>&nbsp;other,
+                              <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A>&nbsp;clientConstraints)</PRE>
+<DL>
+<DD>Creates a new <code>BasicInvocationHandler</code> with the
+ specified client constraints and with the same
+ <code>ObjectEndpoint</code> and server constraints as the given
+ other <code>BasicInvocationHandler</code>.
+
+ <p>This constructor is intended for use by the
+ <code>BasicInvocationHandler</code> implementation of the
+ <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#setClientConstraints(net.jini.core.constraint.MethodConstraints)"><CODE>setClientConstraints(net.jini.core.constraint.MethodConstraints)</CODE></A> method.  To create a copy of a
+ given <code>BasicInvocationHandler</code> with new client
+ constraints, use the <A HREF="../../../net/jini/core/constraint/RemoteMethodControl.html#setConstraints(net.jini.core.constraint.MethodConstraints)"><CODE>RemoteMethodControl.setConstraints</CODE></A> method on the containing
+ proxy.
+<P>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>other</CODE> - the <code>BasicInvocationHandler</code> to obtain the
+                <code>ObjectEndpoint</code> and server constraints from<DD><CODE>clientConstraints</CODE> - the client constraints, or
+                <code>null</code>
+<DT><B>Throws:</B>
+<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>other</code> is
+                <code>null</code></DL>
+</DL>
+
+<!-- ============ 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="invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])"><!-- --></A><H3>
+invoke</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>invoke</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;args)
+              throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></PRE>
+<DL>
+<DD>Processes a method invocation made on the encapsulating
+ proxy instance, <code>proxy</code>, and returns the result.
+ This method is invoked when a method is invoked on a proxy
+ instance that this handler is associated with.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ as follows:
+
+ <p>If <code>method</code> is one of the following methods, it
+ is processed as described below:
+
+ <ul>
+
+ <li><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang"><CODE>Object.hashCode</CODE></A>: Returns the hash
+ code value for the proxy.
+
+ <li><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang"><CODE>Object.equals</CODE></A>: Returns
+ <code>true</code> if the argument (<code>args[0]</code>) is an
+ instance of a dynamic proxy class that implements the same
+ ordered set of interfaces as <code>proxy</code> and this
+ invocation handler is equal to the invocation handler of that
+ argument, and returns <code>false</code> otherwise.
+
+ <li><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang"><CODE>Object.toString</CODE></A>: Returns a string
+ representation of the proxy.
+
+ <li><A HREF="../../../net/jini/core/constraint/RemoteMethodControl.html#setConstraints(net.jini.core.constraint.MethodConstraints)"><CODE>RemoteMethodControl.setConstraints</CODE></A>: Returns a new proxy
+ instance of the same class as <code>proxy</code> containing a
+ new invocation handler with the specified new client
+ constraints.  The new invocation handler is created by invoking
+ the <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#setClientConstraints(net.jini.core.constraint.MethodConstraints)"><CODE>setClientConstraints</CODE></A> method
+ of this object with the specified client constraints
+ (<code>args[0]</code>).  An exception is thrown if
+ <code>proxy</code> is not an instance of a dynamic proxy class
+ containing this invocation handler.
+
+ <li><A HREF="../../../net/jini/core/constraint/RemoteMethodControl.html#getConstraints()"><CODE>RemoteMethodControl.getConstraints</CODE></A>: Returns this
+ <code>BasicInvocationHandler</code>'s client constraints.
+
+ <li><A HREF="../../../net/jini/security/proxytrust/TrustEquivalence.html#checkTrustEquivalence(java.lang.Object)"><CODE>TrustEquivalence.checkTrustEquivalence</CODE></A>: Returns
+ <code>true</code> if the argument (<code>args[0]</code>) is an
+ instance of a dynamic proxy class that implements the same
+ ordered set of interfaces as <code>proxy</code> and invoking
+ the <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#checkTrustEquivalence(java.lang.Object)"><CODE>checkTrustEquivalence</CODE></A> method
+ of this object with the invocation handler of that argument
+ returns <code>true</code>, and returns <code>false</code>
+ otherwise.
+
+ </ul>
+
+ <p>Otherwise, a remote call is made as follows:
+
+ <p>The object endpoint's <A HREF="../../../net/jini/jeri/ObjectEndpoint.html#newCall(net.jini.core.constraint.InvocationConstraints)"><CODE>newCall</CODE></A>
+ method is invoked to obtain an <A HREF="../../../net/jini/jeri/OutboundRequestIterator.html" title="interface in net.jini.jeri"><CODE>OutboundRequestIterator</CODE></A>,
+ passing constraints obtained by combining the client and server
+ constraints for the specified remote method and making them
+ absolute.  If the returned iterator's <A HREF="../../../net/jini/jeri/OutboundRequestIterator.html#hasNext()"><CODE>hasNext</CODE></A> method returns
+ <code>false</code>, then this method throws a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/ConnectIOException.html" title="class or interface in java.rmi"><CODE>ConnectIOException</CODE></A>.  Otherwise, the iterator is used to make
+ one or more attempts to communicate the remote call.  Each
+ attempt proceeds as follows:
+
+ <blockquote>
+
+ The iterator's <A HREF="../../../net/jini/jeri/OutboundRequestIterator.html#next()"><CODE>next</CODE></A> method
+ is invoked to obtain an <A HREF="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri"><CODE>OutboundRequest</CODE></A>
+ for the current attempt.  If <code>next</code> returns
+ normally, the request's <A HREF="../../../net/jini/jeri/OutboundRequest.html#getUnfulfilledConstraints()"><CODE>getUnfulfilledConstraints</CODE></A> method is invoked, and if the
+ returned requirements or preferences include <A HREF="../../../net/jini/core/constraint/Integrity.html#YES"><CODE>Integrity.YES</CODE></A>, object integrity is enforced for
+ the current remote call attempt.  If the returned requirements
+ include any constraint other than an <A HREF="../../../net/jini/core/constraint/Integrity.html" title="class in net.jini.core.constraint"><CODE>Integrity</CODE></A>
+ constraint, an <A HREF="../../../net/jini/io/UnsupportedConstraintException.html" title="class in net.jini.io"><CODE>UnsupportedConstraintException</CODE></A> is
+ generated and, as described below, wrapped and handled like any
+ other <code>Exception</code> thrown from a remote call attempt.
+ Otherwise, the marshalling of the remote call proceeds with the
+ following steps in order:
+
+ <ul>
+
+ <li>A byte of value <code>0x00</code> is written to the request
+ output stream of the <code>OutboundRequest</code> to indicate
+ the version of the marshalling protocol being used.
+
+ <li>A byte is written to specify object integrity enforcement:
+ <code>0x01</code> if object integrity is being enforced for
+ this remote call attempt, and <code>0x00</code> otherwise.
+
+ <li>A client context collection is created containing an <A HREF="../../../net/jini/io/context/IntegrityEnforcement.html" title="interface in net.jini.io.context"><CODE>IntegrityEnforcement</CODE></A> element that reflects whether or not
+ object integrity is being enforced for this remote call
+ attempt.
+
+ <li>The <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#createMarshalOutputStream(java.lang.Object, java.lang.reflect.Method, net.jini.jeri.OutboundRequest, java.util.Collection)"><CODE>createMarshalOutputStream</CODE></A> method is invoked, passing
+ <code>proxy</code>, <code>method</code>, the
+ <code>OutboundRequest</code>, and the client context, to create
+ the marshal output stream for marshalling the remote call.
+
+ <li>The <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#marshalMethod(java.lang.Object, java.lang.reflect.Method, java.io.ObjectOutputStream, java.util.Collection)"><CODE>marshalMethod</CODE></A> method of this
+ invocation handler is invoked with <code>proxy</code>,
+ <code>method</code>, the marshal output stream, and the client
+ context.
+
+ <li>The <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#marshalArguments(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], java.io.ObjectOutputStream, java.util.Collection)"><CODE>marshalArguments</CODE></A> method of
+ this invocation handler is invoked with <code>proxy</code>,
+ <code>method</code>, <code>args</code>, the marshal output
+ stream, and the client context.
+
+ <li>The marshal output stream is closed.
+
+ </ul>
+
+ <p>Then the object endpoint's <A HREF="../../../net/jini/jeri/ObjectEndpoint.html#executeCall(net.jini.jeri.OutboundRequest)"><CODE>executeCall</CODE></A> method is invoked with the
+ <code>OutboundRequest</code>.  If <code>executeCall</code>
+ returns a <code>RemoteException</code>, then this method throws
+ that exception (and thus the remote call attempt iteration
+ terminates).  If <code>executeCall</code> returns
+ <code>null</code>, then the unmarshalling of the call response
+ proceeds as follows:
+
+ <p>A byte is read from the response input stream of the
+ <code>OutboundRequest</code>:
+
+ <ul>
+
+ <li>If the byte is <code>0x00</code>, indicating a marshalling
+ protocol version mismatch, a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/ProtocolException.html" title="class or interface in java.net"><CODE>ProtocolException</CODE></A> is
+ generated and, as described below, wrapped and handled like any
+ other <code>Exception</code> thrown from a remote call attempt.
+
+ <li>If the byte is <code>0x01</code>, indicating a normal
+ return, the <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#createMarshalInputStream(java.lang.Object, java.lang.reflect.Method, net.jini.jeri.OutboundRequest, boolean, java.util.Collection)"><CODE>createMarshalInputStream</CODE></A> method is invoked, passing
+ <code>proxy</code>, <code>method</code>, the
+ <code>OutboundRequest</code>, a <code>boolean</code> indicating
+ whether or not object integrity is being enforced, and the
+ client context, to create the marshal input stream for
+ unmarshalling the response, and the <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#unmarshalReturn(java.lang.Object, java.lang.reflect.Method, java.io.ObjectInputStream, java.util.Collection)"><CODE>unmarshalReturn</CODE></A> method of this invocation handler is invoked
+ with <code>proxy</code>, <code>method</code>, the marshal input
+ stream, and the client context.  This method returns the value
+ returned by <code>unmarshalReturn</code> (and thus the remote
+ call attempt iteration terminates).
+
+ <li>If the byte is <code>0x02</code>, indicating an exceptional
+ return, a marshal input stream is created by calling the
+ <code>createMarshalInputStream</code> method as described for
+ the previous case, and the <A HREF="../../../net/jini/jeri/BasicInvocationHandler.html#unmarshalThrow(java.lang.Object, java.lang.reflect.Method, java.io.ObjectInputStream, java.util.Collection)"><CODE>unmarshalThrow</CODE></A> method of this invocation handler is invoked
+ with <code>proxy</code>, <code>method</code>, the marshal input
+ stream, and the client context.  This method throws the
+ exception returned by <code>unmarshalThrow</code> (and thus the
+ remote call attempt iteration terminates).
+
+ <li>If the byte is any other value, a
+ <code>ProtocolException</code> is generated and, as described
+ below, wrapped and handled like any other
+ <code>Exception</code> thrown from a remote call attempt.
+
+ </ul>
+
+ <p>If an <code>IOException</code> is thrown during the attempt
+ to communicate the remote call, then it is wrapped in a
+ <code>RemoteException</code> as follows:
+
+ <ul>
+
+ <li>If <code>marshalMethod</code> was not invoked for this
+ attempt, or if an invocation of <A HREF="../../../net/jini/jeri/OutboundRequest.html#getDeliveryStatus()"><CODE>getDeliveryStatus</CODE></A> on the
+ <code>OutboundRequest</code> returns <code>false</code>, or if
+ a marshalling protocol version mismatch was detected, then
+
+ <ul>
+
+ <li>if the <code>IOException</code> is a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/UnknownHostException.html" title="class or interface in java.net"><CODE>java.net.UnknownHostException</CODE></A>,
+ it is wrapped in a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/UnknownHostException.html" title="class or interface in java.rmi"><CODE>java.rmi.UnknownHostException</CODE></A>;
+
+ <li>if it is a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/ConnectException.html" title="class or interface in java.net"><CODE>java.net.ConnectException</CODE></A>, it is wrapped in a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/ConnectException.html" title="class or interface in java.rmi"><CODE>java.rmi.ConnectException</CODE></A>;
+
+ <li>if it is any other <code>IOException</code>, it is wrapped
+ in a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/ConnectIOException.html" title="class or interface in java.rmi"><CODE>ConnectIOException</CODE></A>.
+
+ </ul>
+
+ <li>Otherwise, if <code>executeCall</code> was not invoked for
+ this attempt, the <code>IOException</code> is wrapped in a
+ <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/MarshalException.html" title="class or interface in java.rmi"><CODE>MarshalException</CODE></A>, and if <code>executeCall</code> was
+ invoked, it is wrapped in an <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/UnmarshalException.html" title="class or interface in java.rmi"><CODE>UnmarshalException</CODE></A>.
+
+ </ul>
+
+ <p>If a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang"><CODE>ClassNotFoundException</CODE></A> is thrown
+ during the unmarshalling, then it is wrapped in an <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/UnmarshalException.html" title="class or interface in java.rmi"><CODE>UnmarshalException</CODE></A>.
+
+ <p>In all cases, either the request output stream and the
+ response input stream will be closed or the
+ <code>OutboundRequest</code> will be aborted before this
+ attempt completes.
+
+ </blockquote>
+
+ <p>If an attempt to communicate the remote call throws an
+ <code>Exception</code> (other than an exception returned by
+ <code>executeCall</code> or <code>unmarshalThrow</code>, which
+ terminates the remote call attempt iteration), then if
+ <code>marshalMethod</code> was not invoked for the attempt or
+ if an invocation of <code>getDeliveryStatus</code> on the
+ <code>OutboundRequest</code> returns <code>false</code>, then
+ if the iterator's <code>hasNext</code> method returns
+ <code>true</code>, then another attempt is made.  Otherwise,
+ this method throws the <code>Exception</code> thrown by the
+ last attempt (possibly wrapped as described above).
+
+ <p>Note that invoking a remote method on a remote object via this
+ invoke method preserves "at-most-once" call semantics.  At-most-once
+ call semantics guarantees that the remote call will either a) not
+ execute, b) partially execute, or c) execute exactly once at the remote
+ site.  With Java RMI's at-most-once call semantics, arguments may be
+ marshalled more than once for a given remote call.
+
+ <p>A subclass can override this method to handle the methods of
+ any additional non-remote interfaces implemented by the proxy
+ or to otherwise control invocation handling behavior.
+
+ <p>The semantics of this method are unspecified if the
+ arguments could not have been produced by an instance of some
+ valid dynamic proxy class containing this invocation handler.
+ This method throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang"><CODE>IllegalArgumentException</CODE></A> if
+ <code>proxy</code> is an instance of
+ <code>InvocationHandler</code> or, if a remote call is to be
+ made, any of the superinterfaces of <code>proxy</code>'s class
+ have a method with the same name and parameter types as
+ <code>method</code> but that does not declare
+ <code>RemoteException</code> or a superclass of
+ <code>RemoteException</code> in its <code>throws</code> clause
+ (even if such a method is not a member of any of the direct
+ superinterfaces of <code>proxy</code>'s class because of
+ overriding).
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/InvocationHandler.html#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])" title="class or interface in java.lang.reflect">invoke</A></CODE> in interface <CODE><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">InvocationHandler</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A></CODE><DT><B>See Also:</B><DD><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/UndeclaredThrowableException.html" title="class or interface in java.lang.reflect"><CODE>UndeclaredThrowableException</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setClientConstraints(net.jini.core.constraint.MethodConstraints)"><!-- --></A><H3>
+setClientConstraints</H3>
+<PRE>
+protected <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">InvocationHandler</A> <B>setClientConstraints</B>(<A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A>&nbsp;constraints)</PRE>
+<DL>
+<DD>Returns a copy of this invocation handler with the specified
+ constraints as its new client constraints.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ as follows:
+
+ <p>This method looks for a public constructor declared by the
+ class of this object with two parameters, the first parameter
+ type being the class of this object and the second parameter
+ type being <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint"><CODE>MethodConstraints</CODE></A>.  If found, the
+ constructor is invoked with this instance and the specified
+ constraints, and the resulting object is returned.  If the
+ constructor could not be found or was not accessible, or if the
+ constructor invocation throws an exception, an
+ <code>UndeclaredThrowableException</code> is thrown.
+
+ <p>A subclass can override this method to control how the
+ invocation handler is copied.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>constraints</CODE> - the new client constraints, or
+                <code>null</code>
+<DT><B>Returns:</B><DD>a copy of this invocation handler with the specified
+                constraints as its client constraints</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createMarshalOutputStream(java.lang.Object, java.lang.reflect.Method, net.jini.jeri.OutboundRequest, java.util.Collection)"><!-- --></A><H3>
+createMarshalOutputStream</H3>
+<PRE>
+protected <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A> <B>createMarshalOutputStream</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                                                       <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                                                       <A HREF="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri">OutboundRequest</A>&nbsp;request,
+                                                       <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)
+                                                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>Returns a new <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><CODE>ObjectOutputStream</CODE></A> instance to use to write
+ objects to the request output stream obtained by invoking the <A HREF="../../../net/jini/jeri/OutboundRequest.html#getRequestOutputStream()"><CODE>getRequestOutputStream</CODE></A> method
+ on the given <code>request</code>.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ to return a new <A HREF="../../../net/jini/io/MarshalOutputStream.html" title="class in net.jini.io"><CODE>MarshalOutputStream</CODE></A> instance
+ constructed with the output stream obtained from
+ <code>request</code> as specified above and an unmodifiable
+ view of the supplied <code>context</code> collection.
+
+ <p>A subclass can override this method to control how the
+ marshal input stream is created or implemented.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>proxy</CODE> - the proxy instance<DD><CODE>method</CODE> - the remote method invoked<DD><CODE>request</CODE> - the outbound request<DD><CODE>context</CODE> - the client context
+<DT><B>Returns:</B><DD>a new <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io"><CODE>ObjectOutputStream</CODE></A> instance for marshalling
+                a call request
+<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
+<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 any argument is <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createMarshalInputStream(java.lang.Object, java.lang.reflect.Method, net.jini.jeri.OutboundRequest, boolean, java.util.Collection)"><!-- --></A><H3>
+createMarshalInputStream</H3>
+<PRE>
+protected <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A> <B>createMarshalInputStream</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                                                     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                                                     <A HREF="../../../net/jini/jeri/OutboundRequest.html" title="interface in net.jini.jeri">OutboundRequest</A>&nbsp;request,
+                                                     boolean&nbsp;integrity,
+                                                     <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)
+                                              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>Returns a new <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><CODE>ObjectInputStream</CODE></A> instance to use to read
+ objects from the response input stream obtained by invoking the <A HREF="../../../net/jini/jeri/OutboundRequest.html#getResponseInputStream()"><CODE>getResponseInputStream</CODE></A> method
+ on the given <code>request</code>.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ to return a new <A HREF="../../../net/jini/io/MarshalInputStream.html" title="class in net.jini.io"><CODE>MarshalInputStream</CODE></A> instance constructed
+ with the input stream obtained from <code>request</code> as
+ specified above for the input stream <code>in</code>, the class
+ loader of <code>proxy</code>'s class for
+ <code>defaultLoader</code> and <code>verifierLoader</code>,
+ this method's <code>integrity</code> argument for
+ <code>verifyCodebaseIntegrity</code>, and an unmodifiable view
+ of <code>context</code> for the <code>context</code>
+ collection.  The <A HREF="../../../net/jini/io/MarshalInputStream.html#useCodebaseAnnotations()"><CODE>useCodebaseAnnotations</CODE></A> method is invoked on the created stream
+ before it is returned.
+
+ <p>An exception is thrown if <code>proxy</code> is not an instance
+ of a dynamic proxy class containing this invocation handler.
+
+ <p>A subclass can override this method to control how the
+ marshal input stream is created or implemented.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>proxy</CODE> - the proxy instance<DD><CODE>method</CODE> - the remote method invoked<DD><CODE>request</CODE> - the outbound request<DD><CODE>integrity</CODE> - whether or not to verify codebase integrity<DD><CODE>context</CODE> - the client context
+<DT><B>Returns:</B><DD>a new <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io"><CODE>ObjectInputStream</CODE></A> instance for unmarshalling
+                a call response
+<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
+<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 any argument is <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="marshalMethod(java.lang.Object, java.lang.reflect.Method, java.io.ObjectOutputStream, java.util.Collection)"><!-- --></A><H3>
+marshalMethod</H3>
+<PRE>
+protected void <B>marshalMethod</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                             <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                             <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A>&nbsp;out,
+                             <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)
+                      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>Marshals a representation of the given <code>method</code> to
+ the outgoing request stream, <code>out</code>.  For each remote
+ call, the <code>invoke</code> method calls this method to
+ marshal a representation of the method.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ to write the JRMP method hash (defined in section 8.3 of the
+ Java RMI specification) for the given method to the output stream
+ using the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html#writeLong(long)" title="class or interface in java.io"><CODE>writeLong</CODE></A>
+ method.
+
+ <p>A subclass can override this method to control how the remote
+ method is marshalled.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>proxy</CODE> - the proxy instance that the method was invoked on<DD><CODE>method</CODE> - the <code>Method</code> instance corresponding
+          to the interface method invoked on the proxy
+          instance.  The declaring class of the
+          <code>Method</code> object will be the interface that
+          the method was declared in, which may be a
+          superinterface of the proxy interface that the proxy
+          class inherits the method through.<DD><CODE>out</CODE> - outgoing request stream for the remote call<DD><CODE>context</CODE> - the client context
+<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
+<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 any argument is <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="marshalArguments(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], java.io.ObjectOutputStream, java.util.Collection)"><!-- --></A><H3>
+marshalArguments</H3>
+<PRE>
+protected void <B>marshalArguments</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;args,
+                                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html" title="class or interface in java.io">ObjectOutputStream</A>&nbsp;out,
+                                <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)
+                         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>Marshals the arguments for the specified remote method to the outgoing
+ request stream, <code>out</code>.  For each remote call, the
+ <code>invoke</code> method calls this method to marshal arguments.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ marshal each argument as follows:
+
+ <p>If the corresponding declared parameter type is primitive, then the 
+ the primitive value is written to the stream (for example, if the type
+ is <code>int.class</code>, then the primitive <code>int</code> value
+ is written to the stream using the <code>writeInt</code> method).
+ Otherwise, the argument is written to the stream using the
+ <code>writeObject</code> method.
+
+ <p>A subclass can override this method to marshal the arguments
+ in an alternative context, perform pre- or post-processing on
+ the arguments, marshal additional implicit data, or otherwise
+ control how the arguments are marshalled.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>proxy</CODE> - the proxy instance that the method was invoked on<DD><CODE>method</CODE> - the <code>Method</code> instance corresponding
+          to the interface method invoked on the proxy
+          instance.  The declaring class of the
+          <code>Method</code> object will be the interface that
+          the method was declared in, which may be a
+          superinterface of the proxy interface that the proxy
+          class inherits the method through.<DD><CODE>args</CODE> - an array of objects containing the values of the
+          arguments passed in the method invocation on the
+          proxy instance.  If an argument's corresponding declared
+          parameter type is primitive, then its value is
+          represented with an instance of the corresponding primitive
+          wrapper class, such as <code>java.lang.Integer</code> or 
+          <code>java.lang.Boolean</code>.<DD><CODE>out</CODE> - outgoing request stream for the remote call<DD><CODE>context</CODE> - the client context
+<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
+<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 any argument is <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="unmarshalReturn(java.lang.Object, java.lang.reflect.Method, java.io.ObjectInputStream, java.util.Collection)"><!-- --></A><H3>
+unmarshalReturn</H3>
+<PRE>
+protected <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>unmarshalReturn</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                                 <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                                 <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A>&nbsp;in,
+                                 <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)
+                          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>,
+                                 <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
+<DL>
+<DD>Unmarshals the return value for the specified remote method from the
+ incoming response stream, <code>in</code>.  In the case that a value is
+ returned from the invocation on the remote object, this method is
+ called to unmarshal that return value.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ as follows:
+
+ <p>If the return type of the method is void, then no return value is
+ read from the stream and <code>null</code> is returned.  If the return
+ type is a primitive type, then the primitive value is read from the
+ stream (for example, if the type is <code>int.class</code>, then the
+ primitive <code>int</code> value is read from the stream using the
+ <code>readInt</code> method).  Otherwise, the return value is read from
+ the stream using the <code>readObject</code> method.
+
+ <p>A subclass can override this method to unmarshal the return
+ value in an alternative context, perform post-processing on the
+ return value, unmarshal additional implicit data, or otherwise
+ control how the return value is unmarshalled.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>proxy</CODE> - the proxy instance that the method was invoked on<DD><CODE>method</CODE> - the <code>Method</code> instance corresponding
+          to the interface method invoked on the proxy
+          instance.  The declaring class of the
+          <code>Method</code> object will be the interface that
+          the method was declared in, which may be a
+          superinterface of the proxy interface that the proxy
+          class inherits the method through.<DD><CODE>in</CODE> - the incoming result stream for the remote call<DD><CODE>context</CODE> - the client context
+<DT><B>Returns:</B><DD>the unmarshalled return value of the method invocation on 
+                the proxy instance.  If the declared return value of the
+          interface method is a primitive type, then the
+          value returned by <code>invoke</code> will be an
+          instance of the corresponding primitive wrapper
+          class; otherwise, it will be a type assignable to
+                the declared return type.
+<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
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE> - if a class could not be found during
+          unmarshalling
+<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 any argument is <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="unmarshalThrow(java.lang.Object, java.lang.reflect.Method, java.io.ObjectInputStream, java.util.Collection)"><!-- --></A><H3>
+unmarshalThrow</H3>
+<PRE>
+protected <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html" title="class or interface in java.lang">Throwable</A> <B>unmarshalThrow</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;proxy,
+                                   <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect">Method</A>&nbsp;method,
+                                   <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html" title="class or interface in java.io">ObjectInputStream</A>&nbsp;in,
+                                   <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html" title="class or interface in java.util">Collection</A>&nbsp;context)
+                            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>,
+                                   <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
+<DL>
+<DD>Unmarshals the throwable for the specified remote method from the
+ incoming response stream, <code>in</code>, and returns the result.  In
+ the case that an exception was thrown as a result of the
+ invocation on the remote object, this method is called to unmarshal
+ that throwable.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ to return the throwable unmarshalled from the stream using the
+ <code>readObject</code> method.  If the unmarshalled throwable
+ is a checked exception that is not assignable to any exception
+ in the <code>throws</code> clause of the method implemented by the
+ <code>proxy</code>'s class, then: if there is no public member
+ method of <code>proxy</code>'s class with the same name and
+ parameter types as <code>method</code> an <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang"><CODE>IllegalArgumentException</CODE></A> is thrown, otherwise that exception
+ is wrapped in an <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/UnexpectedException.html" title="class or interface in java.rmi"><CODE>UnexpectedException</CODE></A> and the wrapped
+ exception is returned.
+
+ <p>A subclass can override this method to unmarshal the return
+ value in an alternative context, perform post-processing on the
+ return value, unmarshal additional implicit data, or otherwise
+ control how the return value is unmarshalled.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>proxy</CODE> - the proxy instance that the method was invoked on<DD><CODE>method</CODE> - the <code>Method</code> instance corresponding
+          to the interface method invoked on the proxy
+          instance.  The declaring class of the
+          <code>Method</code> object will be the interface that
+          the method was declared in, which may be a
+          superinterface of the proxy interface that the proxy
+          class inherits the method through.<DD><CODE>context</CODE> - the client context<DD><CODE>in</CODE> - the incoming result stream for the remote call
+<DT><B>Returns:</B><DD>the unmarshalled exception to throw from the method
+                invocation on the proxy instance.  The exception's type
+                must be assignable either to any of the exception types
+                declared in the <code>throws</code> clause of the interface
+                method or to the unchecked exception types
+                <code>java.lang.RuntimeException</code> or
+                <code>java.lang.Error</code>.
+<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
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassNotFoundException.html" title="class or interface in java.lang">ClassNotFoundException</A></CODE> - if a class could not be found during
+          unmarshalling
+<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 any argument is <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getObjectEndpoint()"><!-- --></A><H3>
+getObjectEndpoint</H3>
+<PRE>
+public final <A HREF="../../../net/jini/jeri/ObjectEndpoint.html" title="interface in net.jini.jeri">ObjectEndpoint</A> <B>getObjectEndpoint</B>()</PRE>
+<DL>
+<DD>Returns this <code>BasicInvocationHandler</code>'s
+ <code>ObjectEndpoint</code>.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the <code>ObjectEndpoint</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getClientConstraints()"><!-- --></A><H3>
+getClientConstraints</H3>
+<PRE>
+public final <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A> <B>getClientConstraints</B>()</PRE>
+<DL>
+<DD>Returns this <code>BasicInvocationHandler</code>'s client
+ constraints.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the client constraints</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getServerConstraints()"><!-- --></A><H3>
+getServerConstraints</H3>
+<PRE>
+public final <A HREF="../../../net/jini/core/constraint/MethodConstraints.html" title="interface in net.jini.core.constraint">MethodConstraints</A> <B>getServerConstraints</B>()</PRE>
+<DL>
+<DD>Returns this <code>BasicInvocationHandler</code>'s server
+ constraints.
+<P>
+<DD><DL>
+</DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the server constraints</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="hashCode()"><!-- --></A><H3>
+hashCode</H3>
+<PRE>
+public int <B>hashCode</B>()</PRE>
+<DL>
+<DD>Returns the hash code value for this invocation handler.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the hash code value for this invocation handler</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="equals(java.lang.Object)"><!-- --></A><H3>
+equals</H3>
+<PRE>
+public boolean <B>equals</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;obj)</PRE>
+<DL>
+<DD>Compares the specified object with this
+ <code>BasicInvocationHandler</code> for equality.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ to return <code>true</code> if and only if
+
+ <ul>
+
+ <li>the specified object has the same class as this object,
+
+ <li>the <code>ObjectEndpoint</code> in the specified object has the
+ same class and is equal to the object endpoint in this object, and
+
+ <li>the client constraints and server constraints in the specified
+ object are equal to the ones in this object.
+
+ </ul>
+
+ <p>A subclass should override this method if adds instance
+ state that affects equality.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>obj</CODE> - the object to compare with
+<DT><B>Returns:</B><DD><code>true</code> if <code>obj</code> is equivalent to
+                this object; <code>false</code> otherwise</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="checkTrustEquivalence(java.lang.Object)"><!-- --></A><H3>
+checkTrustEquivalence</H3>
+<PRE>
+public boolean <B>checkTrustEquivalence</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;obj)</PRE>
+<DL>
+<DD>Returns <code>true</code> if the specified object (which is not
+ yet known to be trusted) is equivalent in trust, content, and
+ function to this known trusted object, and <code>false</code>
+ otherwise.
+
+ <p><code>BasicInvocationHandler</code> implements this method
+ to return <code>true</code> if and only if
+
+ <ul>
+
+ <li>the specified object has the same class as this object,
+
+ <li>this object's <code>ObjectEndpoint</code> is an instance of
+ <A HREF="../../../net/jini/security/proxytrust/TrustEquivalence.html" title="interface in net.jini.security.proxytrust"><CODE>TrustEquivalence</CODE></A> and invoking its
+ <code>checkTrustEquivalence</code> method with the specified
+ object's <code>ObjectEndpoint</code> returns <code>true</code>,
+ and
+
+ <li>the client constraints and server constraints in the
+ specified object are equal to the ones in this object.
+
+ </ul>
+
+ <p>A subclass should override this method to perform any
+ additional checks that are necessary.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="../../../net/jini/security/proxytrust/TrustEquivalence.html#checkTrustEquivalence(java.lang.Object)">checkTrustEquivalence</A></CODE> in interface <CODE><A HREF="../../../net/jini/security/proxytrust/TrustEquivalence.html" title="interface in net.jini.security.proxytrust">TrustEquivalence</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>obj</CODE> - object to check that is not yet known to be trusted
+<DT><B>Returns:</B><DD><code>true</code> if the specified object (that is not yet
+ known to be trusted) is equivalent in trust, content, and function to
+ this known trusted object, and returns <code>false</code> otherwise</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="toString()"><!-- --></A><H3>
+toString</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>toString</B>()</PRE>
+<DL>
+<DD>Returns a string representation of this
+ <code>BasicInvocationHandler</code>.
+<P>
+<DD><DL>
+<DT><B>Overrides:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></DL>
+</DD>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>a string representation of this
+ <code>BasicInvocationHandler</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/BasicInvocationHandler.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/BasicInvocationDispatcher.html" title="class in net.jini.jeri"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../net/jini/jeri/BasicJeriExporter.html" title="class 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/BasicInvocationHandler.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="BasicInvocationHandler.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;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&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>