Table of Contents


Please read the general Migration Guide page first, for common considerations that apply to migration or upgrade between versions of Apache Tomcat®.

Migrating from 5.5.x to 6.0.x

This section lists all the known changes between 5.5.x and 6.0.x which may cause backwards compatibility problems when upgrading.

Java 5 required

Apache Tomcat 6.0.x requires Java 5 or later, unlike Apache Tomcat 5.5.x which could use a compatibility package to run on JRE 1.4.

Modified directory structure

Shared libraries

Apache Tomcat 5.5.x used, by default, a directory structure including common, shared and server subdirectories. Apache Tomcat 6.0.x uses a single lib directory.

The lib directory is the direct replacement for both common/lib and common/classes subdirectories: it accepts both JARs and exploded class hierarchies.

The conf/ file can be used to modify the directory structure.

Starting with version 6.0.21, Apache Tomcat supports both the $CATALINA_BASE/lib and $CATALINA_HOME/lib directories. The jars and classes in $CATALINA_BASE/lib are earlier on the class path and thus take precedence.

Endorsed libraries

The $CATALINA_HOME/common/endorsed subdirectory is replaced by the $CATALINA_HOME/endorsed directory. This directory is absent by default.

The JAVA_ENDORSED_DIRS environment variable can be used with setenv.bat|sh scripts to provide alternative location of this directory.

Default web applications

The Manager and Host Manager web applications are no longer in server/webapps. All of the default web applications are now located in the webapps directory.

Note, that if deployOnStartup or autoDeploy options on the Host are enabled, the META-INF/context.xml files of manager and host-manager applications will be copied into the $CATALINA_BASE/conf/[engine_name]/[host_name] directory when Tomcat starts for the first time.

When using a shared webhosting environment, it is recommended to forbid the use of context.xml inside the web applications (using the deployXML attribute of the Host element). (This option is also available in Tomcat 5.5).

Modified classloading

As a result of the modification of the directory structure, the common, shared and server classloaders have been merged into one. Effectively, the shared and server classloaders are not configured by default and the common classloader is mapped to the lib directory, as described above.

This behavior and structure can be modified using the conf/ file.

Internal Logging API package renaming

Apache Tomcat 5.5.x relied on the Apache Commons Logging library for its internal logging. Apache Tomcat 6.0.x and later no more uses the library directly, but uses a private copy of it. The classes are in the org.apache.juli.logging package.

The rationale behind this change is that so that application logging can be as independent as possible from the container, while still having the possibility of being unified.

By default only a subset of Apache Commons Logging classes that are needed to perform logging to java.util.logging is included with Tomcat. If you want to configure Tomcat to redirect its logging into Log4J, or any other logging framework supported by the full Apache Commons Logging library, you will have to replace one of Tomcat JARs with the full implementation. The JAR is available as an extras component. See the logging and extras documentation for more details.


As Apache Tomcat no longer directly uses the Apache Commons Logging library, the commons-logging-api.jar library is no longer provided for the web applications. The web applications that use Apache Commons Logging have to provide their own copy of that library. It is recommended to put it into their WEB-INF/lib directory, like any other JAR.

SSLEnabled attribute on Connector

For all SSL enabled connectors, the SSLEnabled flag must be set to true to enable encryption. Tomcat no longer relies on using the protocol and other parameters to determine if the transport should be encrypted, to give maximum flexibility in proxied scenarios.

Connector thread pools

The Connector thread pools have been simplified. They now grow to the maximum size specified but never shrink. The attributes associated with shrinking the thread pool (e.g. minSpareThreads) will be ignored. If you require a thread pool that grows and shrinks with demand you'll need to configure an Executor and then configure your Connector to use it.

Clustering configuration changes

Clustering configuration was refactored. See the clustering documentation for more details.

Upgrading 6.0.x

When upgrading instances of Apache Tomcat from one version of Tomcat 6 to another, particularly when using separate locations for $CATALINA_HOME and $CATALINA_BASE, it is necessary to ensure that any changes in the configuration files such as new attributes and changes to defaults are applied as part of the upgrade. To assist with the identification of these changes, the form below may be used to view the differences between the configuration files in different versions of Tomcat 6.

Tomcat 6.0.x configuration file differences

Select a configuration file, old version and new version from the boxes below and then click "View differences" to see the differences. The differences will be shown in a new tab/window.

You can also use Subversion command similar to the following (all on one line):

svn diff