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.
  • Method Details

    • 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
    • getClassLoaderName

      public static String getClassLoaderName(Class<?> type)
    • loadClassFromContextLoader

      public static Class<?> loadClassFromContextLoader(String className) throws ClassNotFoundException
      Throws:
      ClassNotFoundException