Apache Tomcat 7 Configuration Reference (7.0.96) - The Loader Component
Author: Craig R. McClanahan

| # Apache Tomcat 7 Version 7.0.96, Jul 24 2019 |

Links Docs Home Config Ref. Home FAQ User Comments Top Level Elements Server Service Executors Executor Connectors HTTP AJP Containers Context Engine Host Cluster Nested Components Global Resources JarScanner Listeners Loader Manager Realm Resources SessionIdGenerator Valve Cluster Elements Cluster Manager Channel Channel/Membership Channel/Sender Channel/Receiver Channel/Interceptor Valve Deployer ClusterListener web.xml Filter Other System properties | # The Loader Component
Table of Contents
Introduction Attributes Common Attributes Standard Implementation VirtualWebappLoader Implementation Nested Components Special Features Logging
Introduction
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: From the `/WEB-INF/classes` directory inside your web application. From JAR files in the `/WEB-INF/lib` directory inside your web application. From resources made available by Catalina to all web applications globally. 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.
Attributes
> Common Attributes
> > All implementations of Loader support the following attributes:
> > Attribute | Description
> > --- | ---
> > `className` | Java class name of the implementation to use. This class must implement the `org.apache.catalina.Loader` interface. If not specified, the standard value (defined below) will be used.
> > `delegate` | Set to `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.
> > `reloadable` | Set to `true` if you want Catalina to monitor classes in `/WEB-INF/classes/` and `/WEB-INF/lib` for 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 on demand. 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.
> Standard Implementation
> > 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):
> > Attribute | Description
> > --- | ---
> > `loaderClass` | Java class name of the `java.lang.ClassLoader` implementation class to use. If not specified, the default value is `org.apache.catalina.loader.WebappClassLoader`. Custom loaderClass implementations must extend `org.apache.catalina.loader.WebappClassLoaderBase`.The default loaderClass is not parallel capable. A parallel capable loaderClass is available when running on a Java 7 or higher JRE and can be used by specifying `org.apache.catalina.loader.ParallelWebappClassLoader`.
> > `searchExternalFirst` | Set to `true` if you want repositories outside of `WEB-INF/classes` and `WEB-INF/lib` to be searched first. Default value is `false`.
> > `jarOpenInterval` | The interval in milliseconds to keep all jar files open if no jar is accessed. The default value is `90000` milliseconds. A non-positive interval indicates keeping jars always open.
> VirtualWebappLoader Implementation
> > This implementation of Loader is org.apache.catalina.loader.VirtualWebappLoader. It extends `WebappLoader` and supports the following additional attributes
> > Attribute | Description
> > --- | ---
> > `virtualClasspath` | Additional repositories to search for resources. Multiple values can be joined using `;` as a separator. Leading and trailing whitespaces in values are ignored. If a value does not point to an existing directory or `*.jar` file, it is silently skipped. Diagnostic messages can be seen if you enable debug logging for the VirtualWebappLoader class. Example: `virtualClasspath="${catalina.base}/myapp_config"`
> > `searchVirtualFirst` | Set to `true` if you want the virtual class path to be searched before `WEB-INF/classes` and `WEB-INF/lib`. Default value is `false`. If searched before, resources located in the virtual class path take precendence over resources with the same name contained in the webapp.
Nested Components
No components may be nested inside a Loader element.
Special Features
> Logging
> A loader is associated with the log category based on its classname.
Comments
Notice: This comments section collects your suggestions on improving documentation for Apache Tomcat. If you have trouble and need help, read Find Help page and ask your question on the tomcat-users mailing list. Do not ask such questions here. This is not a Q&A section. The Apache Comments System is explained here. Comments may be removed by our moderators if they are either implemented or considered invalid/off-topic.
Copyright © 1999-2019, Apache Software Foundation