org.apache.cxf.common.classloader

## Class ClassLoaderUtils

- java.lang.Object
- - org.apache.cxf.common.classloader.ClassLoaderUtils

-     public final class ClassLoaderUtils
      extends Object

  This class is extremely useful for loading resources and classes in a fault tolerant manner that works across different applications servers. Do not touch this unless you're a grizzled classloading guru veteran who is going to verify any change on 6 different application servers.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ClassLoaderUtils.ClassLoaderHolder`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static URL` | `getResource(String resourceName, Class<?> callingClass)` Load a given resource.
    `static InputStream` | `getResourceAsStream(String resourceName, Class<?> callingClass)` This is a convenience method to load a resource as a stream.
    `static List<URL>` | `getResources(String resourceName, Class<?> callingClass)` Load a given resources.
    `static ClassLoader` | `getURLClassLoader(List<URL> urlList, ClassLoader parent)`
    `static ClassLoader` | `getURLClassLoader(URL[] urls, ClassLoader parent)`
    `static Class<?>` | `loadClass(String className, Class<?> callingClass)` Load a class with a given name.
    `static <T> Class<? extends T>` | `loadClass(String className, Class<?> callingClass, Class<T> type)`
    `static ClassLoaderUtils.ClassLoaderHolder` | `setThreadContextClassloader(ClassLoader newLoader)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### setThreadContextClassloader

          public static ClassLoaderUtils.ClassLoaderHolder setThreadContextClassloader(ClassLoader newLoader)

    - #### getURLClassLoader

          public static ClassLoader getURLClassLoader(URL[] urls,
                                                      ClassLoader parent)

    - #### getURLClassLoader

          public static ClassLoader getURLClassLoader(List<URL> urlList,
                                                      ClassLoader parent)

    - #### getResource

          public static URL getResource(String resourceName,
                                        Class<?> callingClass)

      Load a given resource.

      This method will try to load the resource using the following methods (in order):
      - From Thread.currentThread().getContextClassLoader()
      - From ClassLoaderUtil.class.getClassLoader()
      - callingClass.getClassLoader()
      Parameters:
        `resourceName` - The name of the resource to load
        `callingClass` - The Class object of the calling object

    - #### getResources

          public static List<URL> getResources(String resourceName,
                                               Class<?> callingClass)

      Load a given resources.

      This method will try to load the resources using the following methods (in order):
      - From Thread.currentThread().getContextClassLoader()
      - From ClassLoaderUtil.class.getClassLoader()
      - callingClass.getClassLoader()
      Parameters:
        `resourceName` - The name of the resource to load
        `callingClass` - The Class object of the calling object

    - #### getResourceAsStream

          public static InputStream getResourceAsStream(String resourceName,
                                                        Class<?> callingClass)

      This is a convenience method to load a resource as a stream.

      The algorithm used to find the resource is given in getResource()
      Parameters:
        `resourceName` - The name of the resource to load
        `callingClass` - The Class object of the calling object

    - #### loadClass

          public static Class<?> loadClass(String className,
                                           Class<?> callingClass)
                                    throws ClassNotFoundException

      Load a class with a given name.

      It will try to load the class in the following order:
      - From Thread.currentThread().getContextClassLoader()
      - Using the basic Class.forName()
      - From ClassLoaderUtil.class.getClassLoader()
      - From the callingClass.getClassLoader()
      Parameters:
        `className` - The name of the class to load
        `callingClass` - The Class object of the calling object
      Throws:
        `ClassNotFoundException` - If the class cannot be found anywhere.

    - #### loadClass

          public static <T> Class<? extends T> loadClass(String className,
                                                         Class<?> callingClass,
                                                         Class<T> type)
                                                  throws ClassNotFoundException

      Throws:
        `ClassNotFoundException`

Apache CXF