The Loader element represents the web application class loader that will be used to load Java classes and resources for your web application. Such a class loader must follow the requirements of the Servlet Specification, and load classes from the following locations:
/WEB-INF/classesdirectory inside your web application.
/WEB-INF/libdirectory inside your web application.
A Loader element MAY be nested inside a Context component. If it is not included, a default Loader configuration will be created automatically, which is sufficient for most requirements.
For a more in-depth description of the class loader hierarchy that is implemented by Catalina, see the ClassLoader HowTo.
The description below uses the variable name $CATALINA_BASE to refer the base directory against which most relative paths are resolved. If you have not configured Tomcat for multiple instances by setting a CATALINA_BASE directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, the directory into which you have installed Tomcat.
All implementations of Loader support the following attributes:
Java class name of the implementation to use. This class must
If not specified, the standard value (defined below) will be used.
true if you want the class loader to follow
the standard Java2 delegation model, and attempt to load classes from
parent class loaders before looking inside the web
application. Set to
false (the default) to have the
class loader look inside the web application first, before asking
parent class loaders to find requested classes or resources.
NOTE - This attribute has been deprecated in Tomcat 9 and will be removed in Tomcat 10. Use the equivalent attribute on the surrounding Context component.
true if you want Catalina to monitor classes in
changes, and automatically reload the web application if a change
is detected. This feature is very useful during application
development, but it requires significant runtime overhead and is
not recommended for use on deployed production applications. You
can use the Manager web
application, however, to trigger reloads of deployed applications
NOTE - The value for this property will be
inherited from the
reloadable attribute you set on
the surrounding Context component,
and any value you explicitly set here will be replaced.
The standard implementation of Loader is org.apache.catalina.loader.WebappLoader. It supports the following additional attributes (in addition to the common attributes listed above):
Java class name of the
implementation class to use. Custom implementations must extend
If not specified, the default value is
default loaderClass is parallel capable, which
means that multiple threads may load difference classes in parallel.
A non-parallel capable loaderClass is available and can
be used by specifying
No components may be nested inside a Loader element.
A loader is associated with the log category based on its classname.