Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.jini.loader
Class ClassLoading

    java.lang.Object
      net.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`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2004 Sun Microsystems, Inc. All rights reserved