<?xml version="1.0"?>
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="class-loader-howto.html">

    &project;

    <properties>
        <author email="craigmcc@apache.org">Craig R. McClanahan</author>
        <author email="yoavs@apache.org">Yoav Shapira</author>
        <title>Class Loader HOW-TO</title>
    </properties>

<body>


<section name="Quick Start">

<p>The following rules cover about 95% of the decisions that application
developers and deployers must make about where to place class and resource
files to make them available to web applications:</p>
<ul>
<li>For classes and resources specific to a particular web application,
    place unpacked classes and resources under <code>/WEB-INF/classes</code>
    of your web application archive, or place JAR files containing those
    classes and resources under <code>/WEB-INF/lib</code> of your web
    application archive.</li>
<li>For classes and resources that must be shared across all web applications,
    place unpacked classes and resources under
    <code>$CATALINA_BASE/shared/classes</code>, or place JAR files
    containing those classes and resources under
    <code>$CATALINA_BASE/shared/lib</code>.</li>
</ul>

</section>


<section name="Overview">

<p>Like many server applications, Tomcat 5 installs a variety of class loaders
(that is, classes that implement <code>java.lang.ClassLoader</code>) to allow
different portions of the container, and the web applications running on the
container, to have access to different repositories of available classes and
resources.  This mechanism is used to provide the functionality defined in the
Servlet Specification, version 2.4 -- in particular, Sections 9.4 and 9.6.</p>

<p>In a Java 2 (that is, JDK 1.2 or later) environment, class loaders are
arranged in a parent-child tree.  Normally, when a class loader is asked to
load a particular class or resource, it delegates the request to a parent
class loader first, and then looks in its own repositories only if the parent
class loader(s) cannot find the requested class or resource.  The model for
web application class loaders differs slightly from this, as discussed below,
but the main principles are the same.</p>

<p>When Tomcat 5 is started, it creates a set of class loaders that are
organized into the following parent-child relationships, where the parent
class loader is above the child class loader:</p>

<source>
      Bootstrap
          |
       System
          |
       Common
      /      \
 Catalina   Shared
             /   \
        Webapp1  Webapp2 ... 
</source>

<p>The characteristics of each of these class loaders, including the source
of classes and resources that they make visible, are discussed in detail in
the following section.</p>

</section>

<section name="Class Loader Definitions">

<p>As indicated in the diagram above, Tomcat 5 creates the following class
loaders as it is initialized:</p>
<ul>
<li><strong>Bootstrap</strong> - This class loader contains the basic runtime
    classes provided by the Java Virtual Machine, plus any classes from JAR
    files present in the System Extensions directory
    (<code>$JAVA_HOME/jre/lib/ext</code>).  <em>NOTE</em> - Some JVMs may
    implement this as more than one class loader, or it may not be visible
    (as a class loader) at all.</li>
<li><strong>System</strong> - This class loader is normally initialized from
    the contents of the <code>CLASSPATH</code> environment variable.  All such
    classes are visible to both Tomcat internal classes, and to web
    applications.  However, the standard Tomcat 5 startup scripts
    (<code>$CATALINA_HOME/bin/catalina.sh</code> or
    <code>%CATALINA_HOME%\bin\catalina.bat</code>) totally ignore the contents
    of the <code>CLASSPATH</code> environment variable itself, and instead
    build the System class loader from the following repositories:
    <ul>
    <li><em>$CATALINA_HOME/bin/bootstrap.jar</em> - Contains the main() method
        that is used to initialize the Tomcat 5 server, and the class loader
        implementation classes it depends on.</li>
    <li><em>$JAVA_HOME/lib/tools.jar</em> - Contains the "javac" compiler used
        to convert JSP pages into servlet classes.</li>
    <li><em>$CATALINA_HOME/bin/commons-logging-api.jar</em> - Jakarta commons 
        logging API.</li>
    <li><em>$CATALINA_HOME/bin/commons-daemon.jar</em> - Jakarta commons 
        daemon API.</li>
    <li><em>jmx.jar</em> - The JMX 1.2 implementation.</li>
    </ul></li>
<li><strong>Common</strong> - This class loader contains additional classes
    that are made visible to both Tomcat internal classes and to all web
    applications.  Normally, application classes should <strong>NOT</strong>
    be placed here.  All unpacked classes and resources in
    <code>$CATALINA_HOME/common/classes</code>, as well as classes and
    resources in JAR files under the
    <code>$CATALINA_HOME/commons/endorsed</code> and
    <code>$CATALINA_HOME/common/lib</code> directories,
    are made visible through this
    class loader.  By default, that includes the following:
    <ul>
    <li><em>ant.jar</em> - Apache Ant.</li>
    <li><em>commons-collection.jar</em> - Jakarta commons collection.</li>
    <li><em>commons-dbcp.jar</em> - Jakarta commons DBCP, providing a
        JDBC connection pool to web applications.</li>
    <li><em>commons-el.jar</em> - Jakarta commons el, implementing the 
        expression language used by Jasper.</li>
    <li><em>commons-pool.jar</em> - Jakarta commons pool.</li>
    <li><em>jasper-compiler.jar</em> - The JSP 2.0 compiler.</li>
    <li><em>jasper-runtime.jar</em> - The JSP 2.0 runtime.</li>
    <li><em>jsp-api.jar</em> - The JSP 2.0 API.</li>
    <li><em>naming-common.jar</em> - The JNDI implementation used by Tomcat 5
        to represent in-memory naming contexts.</li>
    <li><em>naming-factory.jar</em> - The JNDI implementation used by Tomcat 5
        to resolve references to enterprise resources (EJB, connection 
        pools).</li>
    <li><em>naming-resources.jar</em> - The specialized JNDI naming context
        implementation used to represent the static resources of a web
        application.</li>
    <li><em>servlet-api.jar</em> - The Servlet and JSP API classes.</li>
    <li><em>xerces.jar</em> - The XML parser that is visible by default to
        Tomcat internal classes and to web applications.</li>
    </ul></li>
<li><strong>Catalina</strong> - This class loader is initialized to include
    all classes and resources required to implement Tomcat 5 itself.  These
    classes and resources are <strong>TOTALLY</strong> invisible to web
    applications.  All unpacked classes and resources in
    <code>$CATALINA_HOME/server/classes</code>, as well as classes and
    resources in JAR files under
    <code>$CATALINA_HOME/server/lib</code>, are made visible through
    this class loader.  By default, that includes the following:
    <ul>
    <li><em>catalina.jar</em> - Implementation of the Catalina servlet
        container portion of Tomcat 5.</li>
    <li><em>jakarta-regexp-X.Y.jar</em> - The binary distribution of the
        <a href="http://jakarta.apache.org/regexp/">Jakarta Regexp</a>
        regular expression processing library, used in the implementation of
        request filters.</li>
    <li><em>servlets-xxxxx.jar</em> - The classes associated with each
        internal servlet that provides part of Tomcat's functionality.
        These are separated so that they can be completely removed if the
        corresponding service is not required, or they can be subject to
        specialized security manager permissions.</li>
    <li><em>tomcat-coyote.jar</em> - Coyote connector for Tomcat 5.</li>
    <li><em>tomcat-http11.jar</em> - Standalone Java HTTP/1.1 
        connector.</li>
    <li><em>tomcat-jk2.jar</em> - Classes for the Java portion of the
        <code>JK 2</code> web server connector, which allows Tomcat to
        run behind web servers such as Apache and iPlanet iAS and iWS.</li>
    <li><em>tomcat-util.jar</em> - Utility classes required by some
        Tomcat connectors.</li>
    </ul></li>
<li><strong>Shared</strong> - This class loader is the place to put classes
    and resources that you wish to share across <strong>ALL</strong>
    web applications (unless Tomcat internal classes also need access,
    in which case you should put them in the <strong>Common</strong>
    class loader instead).  All unpacked classes and resources in
    <code>$CATALINA_BASE/shared/classes</code>, as well as classes and
    resources in JAR files under <code>$CATALINA_BASE/shared/lib</code>, are
    made visible through this class loader. If multiple Tomcat instances are
    run from the same binary using the $CATALINA_BASE environment variable,
    then this classloader repositories are relative to $CATALINA_BASE rather
    than $CATALINA_HOME.</li>
<li><strong>WebappX</strong> - A class loader is created for each web
    application that is deployed in a single Tomcat 5 instance.  All unpacked
    classes and resources in the <code>/WEB-INF/classes</code> directory of
    your web application archive, plus classes and resources in JAR files
    under the <code>/WEB-INF/lib</code> directory of your web application
    archive, are made visible to the containing web application, but to
    no others.</li>
</ul>

<p>As mentioned above, the web application class loader diverges from the
default Java 2 delegation model (in accordance with the recommendations in the
Servlet Specification, version 2.3, section 9.7.2 Web Application Classloader).  
When a request to load a
class from the web application's <em>WebappX</em> class loader is processed,
this class loader will look in the local repositories <strong>first</strong>,
instead of delegating before looking.  There are exceptions. Classes which are
part of the JRE base classes cannot be overriden. For some classes (such as
the XML parser components in JDK 1.4+), the JDK 1.4 endorsed feature can be 
used used 
(see the common classloader definition above). In addition, for the following
class patterns, the classloader will always delegate first 
(and load the class itself if no parent classloader loads it):
<ul>
<li><em>javax.*</em></li>
<li><em>org.xml.sax.*</em></li>
<li><em>org.w3c.dom.*</em></li>
<li><em>org.apache.xerces.*</em></li>
<li><em>org.apache.xalan.*</em></li>
</ul>
Last, any JAR containing servlet API classes will be ignored by the 
classloader.
All other class loaders in Tomcat 5 follow the usual delegation pattern.</p>

<p>Therefore, from the perspective of a web application, class or resource
loading looks in the following repositories, in this order:</p>
<ul>
<li>Bootstrap classes of your JVM</li>
<li>System class loader classses (described above)</li>
<li><em>/WEB-INF/classes</em> of your web application</li>
<li><em>/WEB-INF/lib/*.jar</em> of your web application</li>
<li><em>$CATALINA_HOME/common/classes</em></li>
<li><em>$CATALINA_HOME/common/endorsed/*.jar</em></li>
<li><em>$CATALINA_HOME/common/lib/*.jar</em></li>
<li><em>$CATALINA_BASE/shared/classes</em></li>
<li><em>$CATALINA_BASE/shared/lib/*.jar</em></li>
</ul>

</section>


<section name="XML Parsers and JDK 1.4">

<p>Among many other changes, the JDK 1.4 release packages the JAXP APIs, and
a version of Xerces, inside the JDK.  This has impacts on applications that
wish to use their own XML parser.</p>

<p>In previous versions of Tomcat 5, you could simply replace the XML parser
in the <code>$CATALINA_HOME/common/lib</code> directory to change the parser
used by all web applications.  However, this technique will not be effective
when you are running on JDK 1.4, because the usual class loader delegation
process will always choose the implementation inside the JDK in preference
to this one.</p>

<p>JDK 1.4 supports a mechanism called the "Endorsed Standards Override
Mechanism" to allow replacement of APIs created outside of the JCP (i.e.
DOM and SAX from W3C).  It can also be used to update the XML parser
implementation.  For more information, see:
<a href="http://java.sun.com/j2se/1.4/docs/guide/standards/index.html">
http://java.sun.com/j2se/1.4/docs/guide/standards/index.html</a>.</p>

<p>Tomcat utilizes this mechanism by including the system property setting
<code>-Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed</code> in the
command line that starts the container.  Therefore, you can replace the
parser that is installed in this directory, and it will get used even on a
JDK 1.4 system.</p>

</section>


<section name="Running under a security manager">

<p>When running under a security manager the locations from which classes
are permitted to be loaded will also depend on the contents of your policy
file. See <a href="security-manager-howto.html">Security Manager HOW-TO</a>
for further information.</p>

</section>


</body>

</document>
