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

svn commit: r1052649 [2/3] - in /incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref: ./ class-use/

Added: incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/PreferredClassProvider.html
URL: http://svn.apache.org/viewvc/incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/PreferredClassProvider.html?rev=1052649&view=auto
==============================================================================
--- incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/PreferredClassProvider.html (added)
+++ incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/PreferredClassProvider.html Fri Dec 24 21:12:52 2010
@@ -0,0 +1,878 @@
+<!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:22 EST 2010 -->
+<TITLE>
+PreferredClassProvider (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="net.jini.loader.pref.PreferredClassProvider class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="PreferredClassProvider (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/PreferredClassProvider.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/loader/pref/PreferredClassLoader.html" title="class in net.jini.loader.pref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../net/jini/loader/pref/RequireDlPermProvider.html" title="class in net.jini.loader.pref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?net/jini/loader/pref/PreferredClassProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PreferredClassProvider.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.loader.pref</FONT>
+<BR>
+Class PreferredClassProvider</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 "><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html" title="class or interface in java.rmi.server">java.rmi.server.RMIClassLoaderSpi</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>net.jini.loader.pref.PreferredClassProvider</B>
+</PRE>
+<DL>
+<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../net/jini/loader/pref/RequireDlPermProvider.html" title="class in net.jini.loader.pref">RequireDlPermProvider</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public class <B>PreferredClassProvider</B><DT>extends <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html" title="class or interface in java.rmi.server">RMIClassLoaderSpi</A></DL>
+</PRE>
+
+<P>
+An <code>RMIClassLoader</code> provider that supports preferred
+ classes.
+
+ <p>See the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoader.html" title="class or interface in java.rmi.server"><CODE>RMIClassLoader</CODE></A> specification for information
+ about how to install and configure the <code>RMIClassLoader</code>
+ service provider.
+
+ <p><code>PreferredClassProvider</code> uses instances of <A HREF="../../../../net/jini/loader/pref/PreferredClassLoader.html" title="class in net.jini.loader.pref"><CODE>PreferredClassLoader</CODE></A> to load classes from codebase URL paths
+ supplied to <code>RMIClassLoader.loadClass</code> methods.
+
+ <p><code>PreferredClassProvider</code> does not enforce <A HREF="../../../../net/jini/loader/DownloadPermission.html" title="class in net.jini.loader"><CODE>DownloadPermission</CODE></A> by default, but a subclass can configure it to
+ do so by passing <code>true</code> as the argument to the
+ <code>protected</code> constructor.
+
+ <p>By overriding the <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassAnnotation(java.lang.ClassLoader)"><CODE>getClassAnnotation(ClassLoader)</CODE></A> method, a subclass can also
+ configure the class annotations to be used for classes defined by
+ the system class loader, its ancestor class loaders, and any class
+ loader that is not an instance of <A HREF="../../../../net/jini/loader/ClassAnnotation.html" title="interface in net.jini.loader"><CODE>ClassAnnotation</CODE></A> or <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLClassLoader.html" title="class or interface in java.net"><CODE>URLClassLoader</CODE></A>.
+
+ <h3>Common Terms and Behaviors</h3>
+
+ The following section defines terms and describes behaviors common
+ to how <code>PreferredClassProvider</code> implements the abstract
+ methods of <code>RMIClassLoaderSpi</code>.  Where applicable, these
+ definitions and descriptions are relative to the instance of
+ <code>PreferredClassProvider</code> on which a method is invoked
+ and the context in which it is invoked.
+
+ <p>The <i>annotation string</i> for a class loader is determined by
+ the following procedure:
+
+ <ul>
+
+ <li>If the loader is the system class loader or an ancestor of the
+ system class loader (including the bootstrap class loader), the
+ annotation string is the result of invoking <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassAnnotation(java.lang.ClassLoader)"><CODE>getClassAnnotation(ClassLoader)</CODE></A>
+ with the loader.
+
+ <li>Otherwise, if the loader is an instance of <A HREF="../../../../net/jini/loader/ClassAnnotation.html" title="interface in net.jini.loader"><CODE>ClassAnnotation</CODE></A>, the annotation string is the result of invoking
+ <A HREF="../../../../net/jini/loader/ClassAnnotation.html#getClassAnnotation()"><CODE>getClassAnnotation</CODE></A> on
+ the loader.
+
+ <li>Otherwise, if the loader is an instance of <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLClassLoader.html" title="class or interface in java.net"><CODE>URLClassLoader</CODE></A>, the annotation string is a space-separated list of
+ the URLs returned by an invocation of <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLClassLoader.html#getURLs()" title="class or interface in java.net"><CODE>getURLs</CODE></A> on the loader.
+
+ <li>Otherwise, the annotation string is the result of invoking
+ <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassAnnotation(java.lang.ClassLoader)"><CODE>getClassAnnotation(ClassLoader)</CODE></A> with the loader.
+
+ </ul>
+
+ The <i>annotation URL path</i> for a class loader is the path of
+ URLs obtained by parsing the annotation string for the loader as a
+ list of URLs separated by spaces, where each URL is parsed as with
+ the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URL.html#URL(java.lang.String)" title="class or interface in java.net"><CODE>URL(String)</CODE></A> constructor; if such
+ parsing would result in a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/MalformedURLException.html" title="class or interface in java.net"><CODE>MalformedURLException</CODE></A>, then the
+ annotation URL path for the loader is only defined to the extent
+ that it is not equal to any other path of URLs.
+
+ <p>A <code>PreferredClassProvider</code> maintains an internal
+ table of class loader instances indexed by keys that comprise a
+ path of URLs and a parent class loader.  The table does not
+ strongly reference the class loader instances, in order to allow
+ them (and the classes they have defined) to be garbage collected
+ when they are not otherwise reachable.
+
+ <p>The methods <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader)"><CODE>loadClass</CODE></A>, <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#loadProxyClass(java.lang.String, java.lang.String[], java.lang.ClassLoader)"><CODE>loadProxyClass</CODE></A>, and <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassLoader(java.lang.String)"><CODE>getClassLoader</CODE></A>, which
+ each have a <code>String</code> parameter named
+ <code>codebase</code>, have the following behaviors in common:
+
+ <ul>
+
+ <li><code>codebase</code> may be <code>null</code>.  If it is not
+ <code>null</code>, it is interpreted as a path of URLs by parsing
+ it as a list of URLs separated by spaces, where each URL is parsed
+ as with the <code>URL(String)</code> constructor; this could result
+ in a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/MalformedURLException.html" title="class or interface in java.net"><CODE>MalformedURLException</CODE></A>.  This path of URLs is the
+ <i>codebase URL path</i> for the invocation.
+
+ <li>A class loader known as the <i>codebase loader</i> is chosen
+ based on <code>codebase</code> and the current thread's context
+ class loader as follows.  If <code>codebase</code> is
+ <code>null</code>, then the codebase loader is the current thread's
+ context class loader.  Otherwise, for each non-<code>null</code>
+ loader starting with the current thread's context class loader and
+ continuing with each successive parent class loader, if the
+ codebase URL path is equal to the loader's annotation URL path,
+ then the codebase loader is that loader.  If no such matching
+ loader is found, then the codebase loader is the loader in this
+ <code>PreferredClassProvider</code>'s internal table with the
+ codebase URL path as the key's path of URLs and the current
+ thread's context class loader as the key's parent class loader.  If
+ no such entry exists in the table, then one is created by invoking
+ <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#createClassLoader(java.net.URL[], java.lang.ClassLoader, boolean)"><CODE>createClassLoader</CODE></A> with the codebase URL
+ path, the current thread's context class loader, and the
+ <code>boolean</code> <code>requireDlPerm</code> value that this
+ <code>PreferredClassProvider</code> was constructed with; the
+ created loader is added to the table, and it is chosen as the
+ codebase loader.
+
+ <li>The current security context has <i>permission to access the
+ codebase loader</i> if it has the appropriate permission for each
+ of the URLs in the codebase loader's annotation URL path, where the
+ appropriate permission for a URL is defined as follows.  If the
+ result of invoking <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URL.html#openConnection()" title="class or interface in java.net"><CODE>openConnection()</CODE></A>.<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLConnection.html#getPermission()" title="class or interface in java.net"><CODE>getPermission()</CODE></A> on the <code>URL</code> object is not a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/io/FilePermission.html" title="class or interface in java.io"><CODE>FilePermission</CODE></A> or if it is a <code>FilePermission</code> whose
+ name does not contain a directory separator, then that permission
+ is the appropriate permission.  If it is a
+ <code>FilePermission</code> whose name contains a directory
+ separator, then the appropriate permission is a
+ <code>FilePermission</code> with action <code>"read"</code> and the
+ same name except with the last path segment replaced with
+ <code>"-"</code> (that is, permission to read all files in the same
+ directory and all subdirectories).
+
+ </ul>
+
+ <p>When <code>PreferredClassProvider</code> attempts to load a
+ class (or interface) named <code><i>N</i></code> using class loader
+ <code><i>L</i></code>, it does so in a manner equivalent to
+ evaluating the following expression:
+
+ <pre>
+        Class.forName(<code><i>N</i></code>, false, <code><i>L</i></code>)
+ </pre>
+
+ In particular, the case of <code><i>N</i></code> being the binary
+ name of an array class is supported.
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+  <DD>2.0</DD>
+<DT><B>Author:</B></DT>
+  <DD>Sun Microsystems, Inc.</DD>
+<DT><B>Implementation Specifics:</B></DT>
+  <DD><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.loader.pref.PreferredClassProvider</code> to log
+ information at the following levels:
+
+ <table summary="Describes what is logged by PreferredClassProvider
+ 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> class loading failures
+
+ <tr> <td> <A HREF="../../../../com/sun/jini/logging/Levels.html#HANDLED"><CODE>HANDLED</CODE></A> <td> exceptions caught
+ during class loading operations
+
+ <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> invocations of <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader)"><CODE>loadClass</CODE></A> and <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#loadProxyClass(java.lang.String, java.lang.String[], java.lang.ClassLoader)"><CODE>loadProxyClass</CODE></A>
+
+ <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> detailed activity of
+ <code>loadClass</code> and <code>loadProxyClass</code>
+ implementations
+
+ </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 ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#PreferredClassProvider()">PreferredClassProvider</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new <code>PreferredClassProvider</code>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>protected </CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#PreferredClassProvider(boolean)">PreferredClassProvider</A></B>(boolean&nbsp;requireDlPerm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new <code>PreferredClassProvider</code>.</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>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#createClassLoader(java.net.URL[], java.lang.ClassLoader, boolean)">createClassLoader</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URL.html" title="class or interface in java.net">URL</A>[]&nbsp;urls,
+                  <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;parent,
+                  boolean&nbsp;requireDlPerm)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates the class loader for this
+ <code>PreferredClassProvider</code> to use to load classes from
+ the specified path of URLs with the specified delegation
+ parent.</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/loader/pref/PreferredClassProvider.html#getClassAnnotation(java.lang.Class)">getClassAnnotation</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cl)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Provides the implementation for <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#getClassAnnotation(java.lang.Class)" title="class or interface in java.rmi.server"><CODE>RMIClassLoaderSpi.getClassAnnotation(Class)</CODE></A>.</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/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassAnnotation(java.lang.ClassLoader)">getClassAnnotation</A></B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;loader)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the annotation string for the specified class loader.</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/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassLoader(java.lang.String)">getClassLoader</A></B>(<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>&nbsp;codebase)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Provides the implementation for <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#getClassLoader(java.lang.String)" title="class or interface in java.rmi.server"><CODE>RMIClassLoaderSpi.getClassLoader(String)</CODE></A>.</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/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader)">loadClass</A></B>(<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>&nbsp;codebase,
+          <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>&nbsp;name,
+          <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;defaultLoader)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Provides the implementation for <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader)" title="class or interface in java.rmi.server"><CODE>RMIClassLoaderSpi.loadClass(String,String,ClassLoader)</CODE></A>.</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/Class.html" title="class or interface in java.lang">Class</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#loadProxyClass(java.lang.String, java.lang.String[], java.lang.ClassLoader)">loadProxyClass</A></B>(<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>&nbsp;codebase,
+               <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>[]&nbsp;interfaceNames,
+               <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;defaultLoader)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Provides the implementation of <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#loadProxyClass(java.lang.String, java.lang.String[], java.lang.ClassLoader)" title="class or interface in java.rmi.server"><CODE>RMIClassLoaderSpi.loadProxyClass(String,String[],ClassLoader)</CODE></A>.</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#equals(java.lang.Object)" title="class or interface in java.lang">equals</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#hashCode()" title="class or interface in java.lang">hashCode</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#toString()" title="class or interface in java.lang">toString</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="PreferredClassProvider()"><!-- --></A><H3>
+PreferredClassProvider</H3>
+<PRE>
+public <B>PreferredClassProvider</B>()</PRE>
+<DL>
+<DD>Creates a new <code>PreferredClassProvider</code>.
+
+ <p>This constructor is used by the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoader.html" title="class or interface in java.rmi.server"><CODE>RMIClassLoader</CODE></A>
+ service provider location mechanism when
+ <code>PreferredClassProvider</code> is configured as the
+ <code>RMIClassLoader</code> provider class.
+
+ <p>If there is a security manager, its <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/SecurityManager.html#checkCreateClassLoader()" title="class or interface in java.lang"><CODE>checkCreateClassLoader</CODE></A>
+ method is invoked; this could result in a
+ <code>SecurityException</code>.
+
+ <p><A HREF="../../../../net/jini/loader/DownloadPermission.html" title="class in net.jini.loader"><CODE>DownloadPermission</CODE></A> is not enforced by the created
+ provider.
+<P>
+<DL>
+
+<DT><B>Throws:</B>
+<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 there is a security manager and
+ the invocation of its <code>checkCreateClassLoader</code>
+ method fails</DL>
+</DL>
+<HR>
+
+<A NAME="PreferredClassProvider(boolean)"><!-- --></A><H3>
+PreferredClassProvider</H3>
+<PRE>
+protected <B>PreferredClassProvider</B>(boolean&nbsp;requireDlPerm)</PRE>
+<DL>
+<DD>Creates a new <code>PreferredClassProvider</code>.
+
+ <p>This constructor is used by subclasses to control whether
+ or not <A HREF="../../../../net/jini/loader/DownloadPermission.html" title="class in net.jini.loader"><CODE>DownloadPermission</CODE></A> is enforced.
+
+ <p>If there is a security manager, its <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/SecurityManager.html#checkCreateClassLoader()" title="class or interface in java.lang"><CODE>checkCreateClassLoader</CODE></A>
+ method is invoked; this could result in a
+ <code>SecurityException</code>.
+<P>
+<DL>
+<DT><B>Parameters:</B><DD><CODE>requireDlPerm</CODE> - if <code>true</code>, the class loaders
+ created by the provider will only define classes with a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/CodeSource.html" title="class or interface in java.security"><CODE>CodeSource</CODE></A> that is granted <A HREF="../../../../net/jini/loader/DownloadPermission.html" title="class in net.jini.loader"><CODE>DownloadPermission</CODE></A>
+<DT><B>Throws:</B>
+<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 there is a security manager and
+ the invocation of its <code>checkCreateClassLoader</code>
+ method fails</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="loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader)"><!-- --></A><H3>
+loadClass</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>loadClass</B>(<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>&nbsp;codebase,
+                       <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>&nbsp;name,
+                       <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;defaultLoader)
+                throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/MalformedURLException.html" title="class or interface in java.net">MalformedURLException</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>Provides the implementation for <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader)" title="class or interface in java.rmi.server"><CODE>RMIClassLoaderSpi.loadClass(String,String,ClassLoader)</CODE></A>.
+
+ <p><code>PreferredClassProvider</code> implements this method
+ as follows:
+
+ <p>If <code>name</code> is the binary name of an array class
+ (of one or more dimensions) with a primitive element type, this
+ method returns the <code>Class</code> for that array class.
+
+ <p>Otherwise, if <code>defaultLoader</code> is not
+ <code>null</code> and any of the following conditions are true:
+
+ <ul>
+
+ <li>There is no security manager.
+
+ <li>The codebase loader is not the current thread's context
+ class loader and the current security context does not have
+ permission to access the codebase loader.
+
+ <li><code>codebase</code> is <code>null</code>.
+
+ <li>The specified codebase URL path is equal to the annotation
+ URL path of <code>defaultLoader</code>.
+
+ <li>The codebase loader is not an instance of <A HREF="../../../../net/jini/loader/pref/PreferredClassLoader.html" title="class in net.jini.loader.pref"><CODE>PreferredClassLoader</CODE></A>.
+
+ <li>The codebase loader is an instance of
+ <code>PreferredClassLoader</code> and an invocation of <A HREF="../../../../net/jini/loader/pref/PreferredClassLoader.html#isPreferredResource(java.lang.String, boolean)"><CODE>isPreferredResource</CODE></A>
+ on the codebase loader with the class name described below as
+ the first argument and <code>true</code> as the second argument
+ returns <code>false</code>.  If <code>name</code> is the binary
+ name of an array class (of one or more dimensions) with a
+ element type that is a reference type, the class name passed to
+ <code>isPreferredResource</code> is the binary name of that
+ element type; otherwise, the class name passed to
+ <code>isPreferredResource</code> is <code>name</code>.  This
+ invocation is only done if none of the previous conditions are
+ true.  If <code>isPreferredResource</code> throws an
+ <code>IOException</code>, this method throws a
+ <code>ClassNotFoundException</code>.
+
+ </ul>
+
+ then this method attempts to load the class with the specified
+ name using <code>defaultLoader</code>.  If this attempt
+ succeeds, this method returns the resulting <code>Class</code>;
+ if it throws a <code>ClassNotFoundException</code>, this method
+ proceeds as follows.
+
+ <p>Otherwise, this method attempts to load the class with the
+ specified name using the codebase loader, if there is a
+ security manager and the current security context has
+ permission to access the codebase loader, or using the current
+ thread's context class loader otherwise.  If this attempt
+ succeeds, this method returns the resulting <code>Class</code>;
+ if it throws a <code>ClassNotFoundException</code>, this method
+ throws a <code>ClassNotFoundException</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader)" title="class or interface in java.rmi.server">loadClass</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html" title="class or interface in java.rmi.server">RMIClassLoaderSpi</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>codebase</CODE> - the codebase URL path as a space-separated list
+ of URLs, or <code>null</code><DD><CODE>name</CODE> - the binary name of the class to load<DD><CODE>defaultLoader</CODE> - additional contextual class loader
+ to use, or <code>null</code>
+<DT><B>Returns:</B><DD>the <code>Class</code> object representing the loaded class
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/MalformedURLException.html" title="class or interface in java.net">MalformedURLException</A></CODE> - if <code>codebase</code> is
+ non-<code>null</code> and contains an invalid URL
+<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 definition for the class
+ could not be loaded</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getClassAnnotation(java.lang.Class)"><!-- --></A><H3>
+getClassAnnotation</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>getClassAnnotation</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A>&nbsp;cl)</PRE>
+<DL>
+<DD>Provides the implementation for <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#getClassAnnotation(java.lang.Class)" title="class or interface in java.rmi.server"><CODE>RMIClassLoaderSpi.getClassAnnotation(Class)</CODE></A>.
+
+ <p><code>PreferredClassProvider</code> implements this method
+ as follows:
+
+ <p>If <code>cl</code> is an array class (of one or more
+ dimensions) with a primitive element type, this method returns
+ <code>null</code>.
+
+ <p>Otherwise, this method returns the annotation string for the
+ defining class loader of <code>cl</code>, except that if the
+ annotation string would be determined by an invocation of
+ <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLClassLoader.html#getURLs()" title="class or interface in java.net"><CODE>URLClassLoader.getURLs</CODE></A> on that
+ loader and the current security context does not have the
+ permissions necessary to connect to each URL returned by that
+ invocation (where the permission to connect to a URL is
+ determined by invoking <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URL.html#openConnection()" title="class or interface in java.net"><CODE>openConnection()</CODE></A>.<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLConnection.html#getPermission()" title="class or interface in java.net"><CODE>getPermission()</CODE></A> on the <code>URL</code> object), this method
+ returns the result of invoking <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassAnnotation(java.lang.ClassLoader)"><CODE>getClassAnnotation(ClassLoader)</CODE></A> with the loader instead.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#getClassAnnotation(java.lang.Class)" title="class or interface in java.rmi.server">getClassAnnotation</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html" title="class or interface in java.rmi.server">RMIClassLoaderSpi</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>cl</CODE> - the class to obtain the annotation string for
+<DT><B>Returns:</B><DD>the annotation string for the class, or
+ <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getClassAnnotation(java.lang.ClassLoader)"><!-- --></A><H3>
+getClassAnnotation</H3>
+<PRE>
+protected <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>getClassAnnotation</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;loader)</PRE>
+<DL>
+<DD>Returns the annotation string for the specified class loader.
+
+ <p>This method is invoked in order to determine the annotation
+ string for the system class loader, an ancestor of the system
+ class loader, any class loader that is not an instance of
+ <A HREF="../../../../net/jini/loader/ClassAnnotation.html" title="interface in net.jini.loader"><CODE>ClassAnnotation</CODE></A> or <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLClassLoader.html" title="class or interface in java.net"><CODE>URLClassLoader</CODE></A>, or (for an
+ invocation of <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassAnnotation(java.lang.Class)"><CODE>getClassAnnotation(Class)</CODE></A>) a <code>URLClassLoader</code> for
+ which the current security context does not have the
+ permissions necessary to connect to all of its URLs.
+
+ <p><code>PreferredClassProvider</code> implements this method
+ as follows:
+
+ <p>This method returns the value of the system property
+ <code>"java.rmi.server.codebase"</code> (or possibly an earlier
+ cached value).
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>loader</CODE> - the class loader to obtain the annotation string
+ for
+<DT><B>Returns:</B><DD>the annotation string for the class loader, or
+ <code>null</code></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getClassLoader(java.lang.String)"><!-- --></A><H3>
+getClassLoader</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A> <B>getClassLoader</B>(<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>&nbsp;codebase)
+                           throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/MalformedURLException.html" title="class or interface in java.net">MalformedURLException</A></PRE>
+<DL>
+<DD>Provides the implementation for <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#getClassLoader(java.lang.String)" title="class or interface in java.rmi.server"><CODE>RMIClassLoaderSpi.getClassLoader(String)</CODE></A>.
+
+ <p><code>PreferredClassProvider</code> implements this method
+ as follows:
+
+ <p>If there is a security manager, its
+ <code>checkPermission</code> method is invoked with a
+ <code>RuntimePermission("getClassLoader")</code> permission;
+ this could result in a <code>SecurityException</code>.  Also,
+ if there is a security manager, the codebase loader is not the
+ current thread's context class loader, and the current security
+ context does not have permission to access the codebase loader,
+ this method throws a <code>SecurityException</code>.
+
+ <p>This method returns the codebase loader if there is a
+ security manager, or the current thread's context class loader
+ otherwise.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#getClassLoader(java.lang.String)" title="class or interface in java.rmi.server">getClassLoader</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html" title="class or interface in java.rmi.server">RMIClassLoaderSpi</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>codebase</CODE> - the codebase URL path as a space-separated list
+ of URLs, or <code>null</code>
+<DT><B>Returns:</B><DD>a class loader for the specified codebase URL path
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/MalformedURLException.html" title="class or interface in java.net">MalformedURLException</A></CODE> - if <code>codebase</code> is
+ non-<code>null</code> and contains an invalid URL
+<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 there is a security manager and
+ the invocation of its <code>checkPermission</code> method
+ fails, or if the current security context does not have the
+ permissions necessary to connect to all of the URLs in the
+ codebase URL path</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="loadProxyClass(java.lang.String, java.lang.String[], java.lang.ClassLoader)"><!-- --></A><H3>
+loadProxyClass</H3>
+<PRE>
+public <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html" title="class or interface in java.lang">Class</A> <B>loadProxyClass</B>(<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>&nbsp;codebase,
+                            <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>[]&nbsp;interfaceNames,
+                            <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;defaultLoader)
+                     throws <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/MalformedURLException.html" title="class or interface in java.net">MalformedURLException</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>Provides the implementation of <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#loadProxyClass(java.lang.String, java.lang.String[], java.lang.ClassLoader)" title="class or interface in java.rmi.server"><CODE>RMIClassLoaderSpi.loadProxyClass(String,String[],ClassLoader)</CODE></A>.
+
+ <p><code>PreferredClassProvider</code> implements this method
+ as follows:
+
+ <p>If <code>defaultLoader</code> is not <code>null</code> and
+ any of the following conditions are true:
+
+ <ul>
+
+ <li>There is no security manager.
+
+ <li>The codebase loader is not the current thread's context
+ class loader and the current security context does not have
+ permission to access the codebase loader.
+
+ <li><code>codebase</code> is <code>null</code>.
+
+ <li>The specified codebase URL path is equal to the annotation
+ URL path of <code>defaultLoader</code>.
+
+ <li>The codebase loader is not an instance of <A HREF="../../../../net/jini/loader/pref/PreferredClassLoader.html" title="class in net.jini.loader.pref"><CODE>PreferredClassLoader</CODE></A>.
+
+ <li>The codebase loader is an instance of
+ <code>PreferredClassLoader</code> and an invocation of <A HREF="../../../../net/jini/loader/pref/PreferredClassLoader.html#isPreferredResource(java.lang.String, boolean)"><CODE>isPreferredResource</CODE></A>
+ on the codebase loader for each element of
+ <code>interfaces</code>, with the element as the first argument
+ and <code>true</code> as the second argument, all return
+ <code>false</code>.  These invocations are only done if none of
+ the previous conditions are true.  If any invocation of
+ <code>isPreferredResource</code> throws an
+ <code>IOException</code>, this method throws a
+ <code>ClassNotFoundException</code>.
+
+ </ul>
+
+ then this method attempts to load all of the interfaces named
+ by the elements of <code>interfaces</code> using
+ <code>defaultLoader</code>.  If all of the interfaces are
+ loaded successfully, then
+
+ <ul>
+
+ <li>If all of the loaded interfaces are <code>public</code>: if
+ there is a security manager, the codebase loader is the current
+ thread's context class loader or the current security context
+ has permission to access the codebase loader, and the
+ annotation URL path for the codebase loader is not equal to the
+ annotation URL path for <code>defaultLoader</code>, this method
+ first attempts to get a dynamic proxy class (using <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Proxy.html#getProxyClass(java.lang.ClassLoader, java.lang.Class...)" title="class or interface in java.lang.reflect"><CODE>Proxy.getProxyClass</CODE></A>) that is defined by
+ the codebase loader and that implements all of the interfaces,
+ and if this attempt succeeds, this method returns the resulting
+ <code>Class</code>.  Otherwise, this method attempts to get a
+ dynamic proxy class that is defined by
+ <code>defaultLoader</code> and that implements all of the
+ interfaces.  If that attempt succeeds, this method returns the
+ resulting <code>Class</code>; if it throws an
+ <code>IllegalArgumentException</code>, this method throws a
+ <code>ClassNotFoundException</code>.
+
+ <li>If all of the non-<code>public</code> interfaces are
+ defined by the same class loader: this method attempts to get a
+ dynamic proxy class that is defined by that loader and that
+ implements all of the interfaces.  If this attempt succeeds,
+ this method returns the resulting <code>Class</code>; if it
+ throws an <code>IllegalArgumentException</code>, this method
+ throws a <code>ClassNotFoundException</code>.
+
+ <li>Otherwise (if there are two or more non-<code>public</code>
+ interfaces defined by different class loaders): this method
+ throws a <code>LinkageError</code>.
+
+ </ul>
+
+ If any of the attempts to load one of the interfaces throws a
+ <code>ClassNotFoundException</code>, this method proceeds as
+ follows.
+
+ <p>Otherwise, this method attempts to load all of the
+ interfaces named by the elements of <code>interfaces</code>
+ using the codebase loader, if there is a security manager and
+ the current security context has permission to access the
+ codebase loader, or using the current thread's context class
+ loader otherwise.  If all of the interfaces are loaded
+ successfully, then
+
+ <ul>
+
+ <li>If all of the loaded interfaces are <code>public</code>:
+ this method attempts to get a dynamic proxy class that is
+ defined by the loader used to load the interfaces and that
+ implements all of the interfaces.  If this attempt succeeds,
+ this method returns the resulting <code>Class</code>; if it
+ throws an <code>IllegalArgumentException</code>, this method
+ throws a <code>ClassNotFoundException</code>.
+
+ <li>If all of the non-<code>public</code> interfaces are
+ defined by the same class loader: this method attempts to get a
+ dynamic proxy class that is defined by that loader and that
+ implements all of the interfaces.  If this attempt succeeds,
+ this method returns the resulting <code>Class</code>; if it
+ throws an <code>IllegalArgumentException</code>, this method
+ throws a <code>ClassNotFoundException</code>.
+
+ <li>Otherwise (if there are two or more non-<code>public</code>
+ interfaces defined by different class loaders): this method
+ throws a <code>LinkageError</code>.
+
+ </ul>
+
+ If any of the attempts to load one of the interfaces throws a
+ <code>ClassNotFoundException</code>, this method throws a
+ <code>ClassNotFoundException</code>.
+<P>
+<DD><DL>
+<DT><B>Specified by:</B><DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html#loadProxyClass(java.lang.String, java.lang.String[], java.lang.ClassLoader)" title="class or interface in java.rmi.server">loadProxyClass</A></CODE> in class <CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html" title="class or interface in java.rmi.server">RMIClassLoaderSpi</A></CODE></DL>
+</DD>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>codebase</CODE> - the codebase URL path as a space-separated list
+ of URLs, or <code>null</code><DD><CODE>interfaceNames</CODE> - the binary names of the interfaces for
+ the proxy class to implement<DD><CODE>defaultLoader</CODE> - additional contextual class loader to use,
+ or <code>null</code>
+<DT><B>Returns:</B><DD>a dynamic proxy class that implements the named
+ interfaces
+<DT><B>Throws:</B>
+<DD><CODE><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/MalformedURLException.html" title="class or interface in java.net">MalformedURLException</A></CODE> - if <code>codebase</code> is
+ non-<code>null</code> and contains an invalid URL
+<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 definition for one of the
+ named interfaces could not be loaded, or if creation of the
+ dynamic proxy class failed (such as if
+ <code>Proxy.getProxyClass</code> would throw an
+ <code>IllegalArgumentException</code> for the given interface
+ list)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="createClassLoader(java.net.URL[], java.lang.ClassLoader, boolean)"><!-- --></A><H3>
+createClassLoader</H3>
+<PRE>
+protected <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A> <B>createClassLoader</B>(<A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/net/URL.html" title="class or interface in java.net">URL</A>[]&nbsp;urls,
+                                        <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html" title="class or interface in java.lang">ClassLoader</A>&nbsp;parent,
+                                        boolean&nbsp;requireDlPerm)</PRE>
+<DL>
+<DD>Creates the class loader for this
+ <code>PreferredClassProvider</code> to use to load classes from
+ the specified path of URLs with the specified delegation
+ parent.
+
+ <p><code>PreferredClassProvider</code> implements this method
+ as follows:
+
+ <p>This method creates a new instance of <A HREF="../../../../net/jini/loader/pref/PreferredClassLoader.html" title="class in net.jini.loader.pref"><CODE>PreferredClassLoader</CODE></A> that loads classes and resources from
+ <code>urls</code>, delegates to <code>parent</code>, and
+ enforces <A HREF="../../../../net/jini/loader/DownloadPermission.html" title="class in net.jini.loader"><CODE>DownloadPermission</CODE></A> if
+ <code>requireDlPerm</code> is <code>true</code>.  The created
+ loader uses a restricted security context to ensure that the
+ URL retrieval operations undertaken by the loader cannot
+ exercise a permission that is not implied by the permissions
+ necessary to access the loader as a codebase loader for the
+ specified path of URLs.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>urls</CODE> - the path of URLs to load classes and resources from<DD><CODE>parent</CODE> - the parent class loader for delegation<DD><CODE>requireDlPerm</CODE> - if <code>true</code>, the loader must only
+ define classes with a <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/security/CodeSource.html" title="class or interface in java.security"><CODE>CodeSource</CODE></A> that is granted
+ <code>DownloadPermission</code>
+<DT><B>Returns:</B><DD>the created class loader<DT><B>Since:</B></DT>
+  <DD>2.1</DD>
+</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/PreferredClassProvider.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/loader/pref/PreferredClassLoader.html" title="class in net.jini.loader.pref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../net/jini/loader/pref/RequireDlPermProvider.html" title="class in net.jini.loader.pref"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?net/jini/loader/pref/PreferredClassProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="PreferredClassProvider.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>

Added: incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/RequireDlPermProvider.html
URL: http://svn.apache.org/viewvc/incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/RequireDlPermProvider.html?rev=1052649&view=auto
==============================================================================
--- incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/RequireDlPermProvider.html (added)
+++ incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/RequireDlPermProvider.html Fri Dec 24 21:12:52 2010
@@ -0,0 +1,257 @@
+<!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:22 EST 2010 -->
+<TITLE>
+RequireDlPermProvider (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="net.jini.loader.pref.RequireDlPermProvider class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="RequireDlPermProvider (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/RequireDlPermProvider.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/loader/pref/PreferredClassProvider.html" title="class in net.jini.loader.pref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?net/jini/loader/pref/RequireDlPermProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RequireDlPermProvider.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="#methods_inherited_from_class_net.jini.loader.pref.PreferredClassProvider">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;METHOD</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.loader.pref</FONT>
+<BR>
+Class RequireDlPermProvider</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 "><A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoaderSpi.html" title="class or interface in java.rmi.server">java.rmi.server.RMIClassLoaderSpi</A>
+      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html" title="class in net.jini.loader.pref">net.jini.loader.pref.PreferredClassProvider</A>
+          <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>net.jini.loader.pref.RequireDlPermProvider</B>
+</PRE>
+<HR>
+<DL>
+<DT><PRE>public class <B>RequireDlPermProvider</B><DT>extends <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html" title="class in net.jini.loader.pref">PreferredClassProvider</A></DL>
+</PRE>
+
+<P>
+An <code>RMIClassLoader</code> provider that supports preferred
+ classes and enforces <A HREF="../../../../net/jini/loader/DownloadPermission.html" title="class in net.jini.loader"><CODE>DownloadPermission</CODE></A>.
+
+ <p>See the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoader.html" title="class or interface in java.rmi.server"><CODE>RMIClassLoader</CODE></A> specification for information
+ about how to install and configure the <code>RMIClassLoader</code>
+ service provider.
+<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>
+
+<!-- ======== 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/loader/pref/RequireDlPermProvider.html#RequireDlPermProvider()">RequireDlPermProvider</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creates a new <code>RequireDlPermProvider</code>.</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>
+</TABLE>
+&nbsp;<A NAME="methods_inherited_from_class_net.jini.loader.pref.PreferredClassProvider"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TH ALIGN="left"><B>Methods inherited from class net.jini.loader.pref.<A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html" title="class in net.jini.loader.pref">PreferredClassProvider</A></B></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#createClassLoader(java.net.URL[], java.lang.ClassLoader, boolean)">createClassLoader</A>, <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassAnnotation(java.lang.Class)">getClassAnnotation</A>, <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassAnnotation(java.lang.ClassLoader)">getClassAnnotation</A>, <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#getClassLoader(java.lang.String)">getClassLoader</A>, <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader)">loadClass</A>, <A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html#loadProxyClass(java.lang.String, java.lang.String[], java.lang.ClassLoader)">loadProxyClass</A></CODE></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#equals(java.lang.Object)" title="class or interface in java.lang">equals</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#hashCode()" title="class or interface in java.lang">hashCode</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#toString()" title="class or interface in java.lang">toString</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="RequireDlPermProvider()"><!-- --></A><H3>
+RequireDlPermProvider</H3>
+<PRE>
+public <B>RequireDlPermProvider</B>()</PRE>
+<DL>
+<DD>Creates a new <code>RequireDlPermProvider</code>.
+
+ <p>This constructor is used by the <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoader.html" title="class or interface in java.rmi.server"><CODE>RMIClassLoader</CODE></A>
+ service provider location mechanism when
+ <code>RequireDlPermProvider</code> is configured as the
+ <code>RMIClassLoader</code> provider class.
+
+ <p>This constructor passes <code>true</code> to the superclass
+ constructor that has a <code>boolean</code> parameter.
+<P>
+</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/RequireDlPermProvider.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/loader/pref/PreferredClassProvider.html" title="class in net.jini.loader.pref"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?net/jini/loader/pref/RequireDlPermProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="RequireDlPermProvider.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="#methods_inherited_from_class_net.jini.loader.pref.PreferredClassProvider">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;METHOD</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: incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/package-frame.html
URL: http://svn.apache.org/viewvc/incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/package-frame.html?rev=1052649&view=auto
==============================================================================
--- incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/package-frame.html (added)
+++ incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/package-frame.html Fri Dec 24 21:12:52 2010
@@ -0,0 +1,36 @@
+<!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.loader.pref (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="net.jini.loader.pref 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/loader/pref/package-summary.html" target="classFrame">net.jini.loader.pref</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT>&nbsp;
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="PreferredClassLoader.html" title="class in net.jini.loader.pref" target="classFrame">PreferredClassLoader</A>
+<BR>
+<A HREF="PreferredClassProvider.html" title="class in net.jini.loader.pref" target="classFrame">PreferredClassProvider</A>
+<BR>
+<A HREF="RequireDlPermProvider.html" title="class in net.jini.loader.pref" target="classFrame">RequireDlPermProvider</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>

Added: incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/package-summary.html
URL: http://svn.apache.org/viewvc/incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/package-summary.html?rev=1052649&view=auto
==============================================================================
--- incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/package-summary.html (added)
+++ incubator/river/site/trunk/content/river/doc/api/net/jini/loader/pref/package-summary.html Fri Dec 24 21:12:52 2010
@@ -0,0 +1,261 @@
+<!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.loader.pref (Apache River v2.1.2-SNAPSHOT API Documentation)
+</TITLE>
+
+<META NAME="keywords" CONTENT="net.jini.loader.pref package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="net.jini.loader.pref (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/loader/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../net/jini/lookup/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?net/jini/loader/pref/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.loader.pref
+</H2>
+Provides class loader and <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoader.html" title="class or interface in java.rmi.server"><CODE>RMIClassLoader</CODE></A>
+provider implementations that support <i>preferred classes</i>.
+<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>Class Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../net/jini/loader/pref/PreferredClassLoader.html" title="class in net.jini.loader.pref">PreferredClassLoader</A></B></TD>
+<TD>A class loader that supports preferred classes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html" title="class in net.jini.loader.pref">PreferredClassProvider</A></B></TD>
+<TD>An <code>RMIClassLoader</code> provider that supports preferred
+ classes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../net/jini/loader/pref/RequireDlPermProvider.html" title="class in net.jini.loader.pref">RequireDlPermProvider</A></B></TD>
+<TD>An <code>RMIClassLoader</code> provider that supports preferred
+ classes and enforces <A HREF="../../../../net/jini/loader/DownloadPermission.html" title="class in net.jini.loader"><CODE>DownloadPermission</CODE></A>.</TD>
+</TR>
+</TABLE>
+&nbsp;
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package net.jini.loader.pref Description
+</H2>
+
+<P>
+Provides class loader and <A HREF="http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/server/RMIClassLoader.html" title="class or interface in java.rmi.server"><CODE>RMIClassLoader</CODE></A>
+provider implementations that support <i>preferred classes</i>.
+
+<p>A preferred class is a class that is to be loaded by a class loader
+without the loader delegating to its parent class loader first.
+Resources may also be preferred.
+
+<p>With a class loader that supports preferred classes, the first JAR
+file or other URL location from which the loader loads classes can
+contain a <i>preferred list</i>.  A preferred list declares names of
+certain classes and other resources throughout the loader's path of
+URLs as being <i>preferred</i> or not.  When the loader is asked to
+load a class or resource that is preferred (according to the preferred
+list) and the class or resource exists in the loader's path of URLs,
+the loader will not delegate first to its parent class loader as it
+otherwise would do; instead, it will attempt to load the class or
+resource from its own path of URLs only.
+
+<p>By controlling class loader delegation, preferred classes can help
+accomplish the following goals:
+
+<ul>
+
+<li>Ensure that a downloaded class preserves its original codebase
+annotation when it is marshalled later, even if there is a local
+version of the class (that is, a class with the same name that could
+be loaded by an ancestor class loader).
+
+<li>Ensure that the desired version of a downloaded class or resource
+is used, even if there is a local version of the class or resource.
+
+<li>Ensure that the expected security permissions are granted to a
+downloaded class, such as the automatic permission to connect to its
+codebase host, even if there is a local version of the class.
+
+</ul>
+
+Preferred classes accomplish these goals at the expense of type
+equivalence with local classes, because a preferred class constitutes
+a different runtime type than a local class with the same name that
+might otherwise have been loaded.  Therefore, the choice of which
+classes to make preferred should be considered carefully.
+
+<p>There is not a complete or definitive set of rules for when to make
+a class or resource preferred or not, but the following guidelines are
+generally advisable:
+
+<ul>
+
+<li>A type that appears in the transitive closure of the public APIs
+of a downloaded component should <i>not</i> be preferred, so that code
+defined by other class loaders can use those APIs.  In other words,
+for any public class or interface that is part of the downloaded
+component's exported API, that class or interface as well as the
+declared types of its public fields and the declared parameter and
+return types of its public methods should not be preferred, and the
+same algorithm should be applied recursively to all such declared
+types.  Exception types thrown by the methods of the component's API
+that are expected to be caught explicitly by external callers should
+also not be preferred.
+
+<li>A class that will be the actual class of a serialized object (and
+that is not covered by the previous guideline) should be preferred, so
+that its original codebase annotation will be preserved for later
+marshalling, and so forth.
+
+</ul>
+
+<p><A HREF="../../../../net/jini/loader/pref/PreferredClassLoader.html" title="class in net.jini.loader.pref"><CODE>PreferredClassLoader</CODE></A> is a class loader
+implementation that supports preferred classes, and its specification
+defines the format of preferred lists.
+
+<p><A HREF="../../../../net/jini/loader/pref/PreferredClassProvider.html" title="class in net.jini.loader.pref"><CODE>PreferredClassProvider</CODE></A> is an
+<code>RMIClassLoader</code> provider implementation that uses
+<code>PreferredClassLoader</code> to support preferred classes.
+
+<p><A HREF="../../../../net/jini/loader/pref/RequireDlPermProvider.html" title="class in net.jini.loader.pref"><CODE>RequireDlPermProvider</CODE></A> is a subclass of
+<code>PreferredClassProvider</code> that enforces <A HREF="../../../../net/jini/loader/DownloadPermission.html" title="class in net.jini.loader"><CODE>DownloadPermission</CODE></A>.
+<P>
+
+<P>
+<DL>
+<DT><B>Since:</B></DT>
+  <DD>2.0</DD>
+<DT><B>Version:</B></DT>
+  <DD>2.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/loader/package-summary.html"><B>PREV PACKAGE</B></A>&nbsp;
+&nbsp;<A HREF="../../../../net/jini/lookup/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../index.html?net/jini/loader/pref/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>