Class CascadingClassLoadHelper

java.lang.Object
org.quartz.classloading.CascadingClassLoadHelper
All Implemented Interfaces:
ClassLoadHelper

public class CascadingClassLoadHelper extends Object implements ClassLoadHelper
A ClassLoadHelper uses all of the ClassLoadHelper types that are found in this package in its attempts to load a class, when one scheme is found to work, it is promoted to the scheme that will be used first the next time a class is loaded (in order to improve performance).

This approach is used because of the wide variance in class loader behavior between the various environments in which Quartz runs (e.g. disparate application servers, stand-alone, mobile devices, etc.). Because of this disparity, Quartz ran into difficulty with a one class-load style fits-all design. Thus, this class loader finds the approach that works, then 'remembers' it.

Author:
jhouse, pl47ypus
See Also:
  • ClassLoadHelper
  • LoadingLoaderClassLoadHelper
  • SimpleClassLoadHelper
  • ThreadContextClassLoadHelper
  • InitThreadContextClassLoadHelper
  • Constructor Details

    • CascadingClassLoadHelper

      public CascadingClassLoadHelper()
  • Method Details

    • initialize

      public void initialize()
      Called to give the ClassLoadHelper a chance to initialize itself, including the opportunity to "steal" the class loader off of the calling thread, which is the thread that is initializing Quartz.
      Specified by:
      initialize in interface ClassLoadHelper
    • loadClass

      public Class loadClass(String name) throws ClassNotFoundException
      Return the class with the given name.
      Specified by:
      loadClass in interface ClassLoadHelper
      Parameters:
      name - of the class to load.
      Returns:
      the requested class.
      Throws:
      ClassNotFoundException - if the class can be found in the classpath.
    • getResource

      public URL getResource(String name)
      Finds a resource with a given name. This method returns null if no resource with this name is found.
      Specified by:
      getResource in interface ClassLoadHelper
      Parameters:
      name - name of the desired resource
      Returns:
      a java.net.URL object
    • getResources

      public List<URL> getResources(String name)
      Finds all resources with a given name. This method returns empty list if no resource with this name is found.
      Specified by:
      getResources in interface ClassLoadHelper
      Parameters:
      name - name of the desired resource
      Returns:
      a java.net.URL list
    • getResourceAsStream

      public InputStream getResourceAsStream(String name)
      Finds a resource with a given name. This method returns null if no resource with this name is found.
      Specified by:
      getResourceAsStream in interface ClassLoadHelper
      Parameters:
      name - name of the desired resource
      Returns:
      a java.io.InputStream object
    • getJobClasses

      public Set<Class<? extends Job>> getJobClasses(String pkgname)
      Given a package name(s), search the classpath for all classes that extend sundial.job .

      A comma(,) or colon(:) can be used to specify multiple packages to scan for Jobs.

      Parameters:
      pkgname -
      Returns:
    • getClassLoader

      public ClassLoader getClassLoader()
      Enable sharing of the "best" class-loader with 3rd party.
      Specified by:
      getClassLoader in interface ClassLoadHelper
      Returns:
      the class-loader user be the helper.