Class ClassLoaderUtils

java.lang.Object
org.apache.xml.security.utils.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

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