Package org.apache.catalina
Interface Loader
- All Known Implementing Classes:
WebappLoader
public interface Loader
A Loader represents a Java ClassLoader implementation that can be used by a Container to load class files
(within a repository associated with the Loader) that are designed to be reloaded upon request, as well as a
mechanism to detect whether changes have occurred in the underlying repository.
In order for a Loader implementation to successfully operate with a Context implementation
that implements reloading, it must obey the following constraints:
- Must implement
Lifecycleso that the Context can indicate that a new class loader is required. - The
start()method must unconditionally create a newClassLoaderimplementation. - The
stop()method must throw away its reference to theClassLoaderpreviously utilized, so that the class loader, all classes loaded by it, and all objects of those classes, can be garbage collected. - Must allow a call to
stop()to be followed by a call tostart()on the sameLoaderinstance. - Based on a policy chosen by the implementation, must call the
Context.reload()method on the owningContextwhen a change to one or more of the class files loaded by this class loader is detected.
- Author:
- Craig R. McClanahan
-
Method Summary
Modifier and TypeMethodDescriptionvoidAdd a property change listener to this component.voidExecute a periodic task, such as reloading, etc.booleanbooleanmodified()Has the internal repository associated with this Loader been modified, such that the loaded classes should be reloaded?voidRemove a property change listener from this component.voidsetContext(Context context) Set the Context with which this Loader has been associated.voidsetDelegate(boolean delegate) Set the "follow standard delegation model" flag used to configure our ClassLoader.
-
Method Details
-
backgroundProcess
void backgroundProcess()Execute a periodic task, such as reloading, etc. This method will be invoked inside the classloading context of this container. Unexpected throwables will be caught and logged. -
getClassLoader
ClassLoader getClassLoader()- Returns:
- the Java class loader to be used by this Loader.
-
getContext
Context getContext()- Returns:
- the Context with which this Loader has been associated.
-
setContext
Set the Context with which this Loader has been associated.- Parameters:
context- The associated Context
-
getDelegate
boolean getDelegate()- Returns:
- the "follow standard delegation model" flag used to configure our ClassLoader.
-
setDelegate
void setDelegate(boolean delegate) Set the "follow standard delegation model" flag used to configure our ClassLoader.- Parameters:
delegate- The new flag
-
addPropertyChangeListener
Add a property change listener to this component.- Parameters:
listener- The listener to add
-
modified
boolean modified()Has the internal repository associated with this Loader been modified, such that the loaded classes should be reloaded?- Returns:
truewhen the repository has been modified,falseotherwise
-
removePropertyChangeListener
Remove a property change listener from this component.- Parameters:
listener- The listener to remove
-