Class WebappLoader

  • All Implemented Interfaces:
    PropertyChangeListener, EventListener, Lifecycle, Loader

    public class WebappLoader
    extends Object
    implements Lifecycle, Loader, PropertyChangeListener
    Classloader implementation which is specialized for handling web applications in the most efficient way, while being Catalina aware (all accesses to resources are made through the DirContext interface). This class loader supports detection of modified Java classes, which can be used to implement auto-reload support.

    This class loader is configured by adding the pathnames of directories, JAR files, and ZIP files with the addRepository() method, prior to calling start(). When a new class is required, these repositories will be consulted first to locate the class. If it is not present, the system class loader will be used instead.

    Version:
    $Revision: 1.10 $ $Date: 2007/05/05 05:32:09 $
    Author:
    Craig R. McClanahan, Remy Maucherat
    • Field Detail

      • lifecycle

        protected LifecycleSupport lifecycle
        The lifecycle event support for this component.
      • sm

        protected static final StringManager sm
        The string manager for this package.
    • Constructor Detail

      • WebappLoader

        public WebappLoader()
        Construct a new WebappLoader with no defined parent class loader (so that the actual parent will be the system class loader).
      • WebappLoader

        public WebappLoader​(ClassLoader parent)
        Construct a new WebappLoader with the specified class loader to be defined as the parent of the ClassLoader we ultimately create.
        Parameters:
        parent - The parent class loader
    • Method Detail

      • getClassLoader

        public ClassLoader getClassLoader()
        Return the Java class loader to be used by this Container.
        Specified by:
        getClassLoader in interface Loader
      • getContainer

        public Container getContainer()
        Return the Container with which this Logger has been associated.
        Specified by:
        getContainer in interface Loader
      • setContainer

        public void setContainer​(Container container)
        Set the Container with which this Logger has been associated.
        Specified by:
        setContainer in interface Loader
        Parameters:
        container - The associated Container
      • getDebug

        public int getDebug()
        Return the debugging detail level for this component.
      • setDebug

        public void setDebug​(int debug)
        Set the debugging detail level for this component.
        Parameters:
        debug - The new debugging detail level
      • getDelegate

        public boolean getDelegate()
        Return the "follow standard delegation model" flag used to configure our ClassLoader.
        Specified by:
        getDelegate in interface Loader
      • setDelegate

        public void setDelegate​(boolean delegate)
        Set the "follow standard delegation model" flag used to configure our ClassLoader.
        Specified by:
        setDelegate in interface Loader
        Parameters:
        delegate - The new flag
      • getInfo

        public String getInfo()
        Return descriptive information about this Loader implementation and the corresponding version number, in the format <description>/<version>.
        Specified by:
        getInfo in interface Loader
      • getLoaderClass

        public String getLoaderClass()
        Return the ClassLoader class name.
      • setLoaderClass

        public void setLoaderClass​(String loaderClass)
        Set the ClassLoader class name.
        Parameters:
        loaderClass - The new ClassLoader class name
      • getReloadable

        public boolean getReloadable()
        Return the reloadable flag for this Loader.
        Specified by:
        getReloadable in interface Loader
      • setReloadable

        public void setReloadable​(boolean reloadable)
        Set the reloadable flag for this Loader.
        Specified by:
        setReloadable in interface Loader
        Parameters:
        reloadable - The new reloadable flag
      • setUseMyFaces

        public void setUseMyFaces​(boolean useMyFaces)
      • addRepository

        public void addRepository​(String repository)
        Add a new repository to the set of repositories for this class loader.
        Specified by:
        addRepository in interface Loader
        Parameters:
        repository - Repository to be added
      • findRepositories

        public String[] findRepositories()
        Return the set of repositories defined for this class loader. If none are defined, a zero-length array is returned. For security reason, returns a clone of the Array (since String are immutable).
        Specified by:
        findRepositories in interface Loader
      • getRepositories

        public String[] getRepositories()
      • getClasspath

        public String getClasspath()
        Classpath, as set in org.apache.catalina.jsp_classpath context property
        Returns:
        The classpath
      • modified

        public boolean modified()
        Has the internal repository associated with this Loader been modified, such that the loaded classes should be reloaded?
        Specified by:
        modified in interface Loader
      • closeJARs

        public void closeJARs​(boolean force)
        Used to periodically signal to the classloader to release JAR resources.
      • toString

        public String toString()
        Return a String representation of this component.
        Overrides:
        toString in class Object
      • addLifecycleListener

        public void addLifecycleListener​(LifecycleListener listener)
        Add a lifecycle event listener to this component.
        Specified by:
        addLifecycleListener in interface Lifecycle
        Parameters:
        listener - The listener to add
      • removeLifecycleListener

        public void removeLifecycleListener​(LifecycleListener listener)
        Remove a lifecycle event listener from this component.
        Specified by:
        removeLifecycleListener in interface Lifecycle
        Parameters:
        listener - The listener to remove
      • init

        public void init()
      • destroy

        public void destroy()
      • getController

        public ObjectName getController()
      • setController

        public void setController​(ObjectName controller)
      • addOverridablePackage

        public void addOverridablePackage​(String packageName)
        Adds the given package name to the list of packages that may always be overriden, regardless of whether they belong to a protected namespace
        Specified by:
        addOverridablePackage in interface Loader
      • setIgnoreHiddenJarFiles

        public void setIgnoreHiddenJarFiles​(boolean ignoreHiddenJarFiles)
        Specified by:
        setIgnoreHiddenJarFiles in interface Loader