net.jini.loader
Class ClassLoading

java.lang.Object
  extended bynet.jini.loader.ClassLoading

public final class ClassLoading
extends Object

Provides static methods for loading classes using RMIClassLoader with optional verification that the codebase URLs used to load classes provide content integrity (see Security.verifyCodebaseIntegrity).

Since:
2.0

Method Summary
static Class loadClass(String codebase, String name, ClassLoader defaultLoader, boolean verifyCodebaseIntegrity, ClassLoader verifierLoader)
          Loads a class using RMIClassLoader.loadClass, optionally verifying that the codebase URLs provide content integrity.
static Class loadProxyClass(String codebase, String[] interfaceNames, ClassLoader defaultLoader, boolean verifyCodebaseIntegrity, ClassLoader verifierLoader)
          Loads a dynamic proxy class using RMIClassLoader.loadProxyClass, optionally verifying that the codebase URLs provide content integrity.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

loadClass

public static Class loadClass(String codebase,
                              String name,
                              ClassLoader defaultLoader,
                              boolean verifyCodebaseIntegrity,
                              ClassLoader verifierLoader)
                       throws MalformedURLException,
                              ClassNotFoundException
Loads a class using RMIClassLoader.loadClass, optionally verifying that the codebase URLs provide content integrity.

This method invokes RMIClassLoader.loadClass with codebase as the first argument, name as the second argument, and defaultLoader as the third argument. If RMIClassLoader.loadClass throws an exception, then this method throws that exception.

If verifyCodebaseIntegrity is true and codebase is not null, then the following verification procedure is performed (this procedure may be skipped if a previous invocation of this method or loadProxyClass has already invoked Security.verifyCodebaseIntegrity with the same value of codebase and the same effective value of verifierLoader as arguments without it throwing an exception):

If the defining class loader of the Class returned by RMIClassLoader.loadClass is not an ancestor of or identical to defaultLoader or the current thread's context class loader, then before causing the Class to be initialized, this method invokes Security.verifyCodebaseIntegrity with codebase as the first argument and verifierLoader as the second argument. If Security.verifyCodebaseIntegrity throws a SecurityException, then this method throws a ClassNotFoundException containing the SecurityException as its cause.

If no exception is thrown, then this method returns the Class returned by RMIClassLoader.loadClass.

Parameters:
codebase - the list of URLs (separated by spaces) to load the class from, or null
name - the name of the class to load
defaultLoader - the class loader value (possibly null) to pass as the defaultLoader argument to RMIClassLoader.loadClass
verifyCodebaseIntegrity - if true, verify that codebase URLs used to load the class provide content integrity
verifierLoader - the class loader value (possibly null) to pass to Security.verifyCodebaseIntegrity, if verifyCodebaseIntegrity is true
Returns:
the Class object representing the loaded class
Throws:
MalformedURLException - if RMIClassLoader.loadClass or Security.verifyCodebaseIntegrity throws a MalformedURLException
ClassNotFoundException - if RMIClassLoader.loadClass throws a ClassNotFoundException or if Security.verifyCodebaseIntegrity throws a SecurityException
NullPointerException - if name is null

loadProxyClass

public static Class loadProxyClass(String codebase,
                                   String[] interfaceNames,
                                   ClassLoader defaultLoader,
                                   boolean verifyCodebaseIntegrity,
                                   ClassLoader verifierLoader)
                            throws MalformedURLException,
                                   ClassNotFoundException
Loads a dynamic proxy class using RMIClassLoader.loadProxyClass, optionally verifying that the codebase URLs provide content integrity.

This method invokes RMIClassLoader.loadProxyClass with codebase as the first argument, interfaceNames as the second argument, and defaultLoader as the third argument. If RMIClassLoader.loadProxyClass throws an exception, then this method throws that exception.

If verifyCodebaseIntegrity is true and codebase is not null, then the following verification procedure is performed (this procedure may be skipped if a previous invocation of this method or loadClass has already invoked Security.verifyCodebaseIntegrity with the same value of codebase and the same effective value of verifierLoader as arguments without it throwing an exception):

If the defining class loader of any of the direct superinterfaces of the proxy class returned by RMIClassLoader.loadProxyClass is not an ancestor of or identical to defaultLoader or the current thread's context class loader, then before causing any such interface to be initialized, this method invokes Security.verifyCodebaseIntegrity with codebase as the first argument and verifierLoader as the second argument. If Security.verifyCodebaseIntegrity throws a SecurityException, then this method throws a ClassNotFoundException containing the SecurityException as its cause.

If no exception is thrown, then this method returns the Class returned by RMIClassLoader.loadProxyClass.

Parameters:
codebase - the list of URLs (separated by spaces) to load classes from, or null
interfaceNames - the names of the interfaces for the proxy class to implement
defaultLoader - the class loader value (possibly null) to pass as the defaultLoader argument to RMIClassLoader.loadProxyClass
verifyCodebaseIntegrity - if true, verify that codebase URLs used to load the interfaces provide content integrity
verifierLoader - the class loader value (possibly null) to pass to Security.verifyCodebaseIntegrity, if verifyCodebaseIntegrity is true
Returns:
the Class object representing the loaded dynamic proxy class
Throws:
MalformedURLException - if RMIClassLoader.loadProxyClass or Security.verifyCodebaseIntegrity throws a MalformedURLException
ClassNotFoundException - if RMIClassLoader.loadProxyClass throws a ClassNotFoundException or if Security.verifyCodebaseIntegrity throws a SecurityException
NullPointerException - if interfaceNames is null or if any element of interfaceNames is null


Copyright © 2003 Sun Microsystems, Inc. All rights reserved