| <!DOCTYPE html SYSTEM "about:legacy-compat"> |
| <html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link href="res/css/tomcat.css" rel="stylesheet" type="text/css"><link href="res/css/fonts/fonts.css" rel="stylesheet" type="text/css"><title>Apache Tomcat® - Migration Guide - Tomcat 9.0.x</title><meta name="author" content="Apache Tomcat Project"><script src="https://www.apachecon.com/event-images/snippet.js"></script></head><body><div id="wrapper"><header id="header"><div class="clearfix"><div class="menu-toggler pull-left" tabindex="1"><div class="hamburger"></div></div><a href="http://tomcat.apache.org/"><img class="tomcat-logo pull-left noPrint" alt="Tomcat Home" src="res/images/tomcat.png"></a><h1 class="pull-left">Apache Tomcat<sup>®</sup></h1><div class="asf-logos pull-right"><a href="https://www.apache.org/foundation/contributing.html" target="_blank" class="pull-left"><img src="https://www.apache.org/images/SupportApache-small.png" class="support-asf" alt="Support Apache"></a><a href="http://www.apache.org/" target="_blank" class="pull-left"><img src="res/images/asf_logo_wide.svg" class="asf-logo" alt="The Apache Software Foundation"></a></div></div></header><main id="middle"><div><div id="mainLeft"><div id="nav-wrapper"><form action="https://www.google.com/search" method="get"><div class="searchbox"><input value="tomcat.apache.org" name="sitesearch" type="hidden"><input aria-label="Search text" placeholder="Search…" required="required" name="q" id="query" type="search"><button>GO</button></div></form><div class="asfevents"><a class="acevent" data-format="square" data-width="150"></a></div><nav><div><h2>Apache Tomcat</h2><ul><li><a href="./index.html">Home</a></li><li><a href="./taglibs.html">Taglibs</a></li><li><a href="./maven-plugin.html">Maven Plugin</a></li></ul></div><div><h2>Download</h2><ul><li><a href="./whichversion.html">Which version?</a></li><li><a href="https://tomcat.apache.org/download-11.cgi">Tomcat 11</a></li><li><a href="https://tomcat.apache.org/download-10.cgi">Tomcat 10</a></li><li><a href="https://tomcat.apache.org/download-90.cgi">Tomcat 9</a></li><li><a href="https://tomcat.apache.org/download-migration.cgi">Tomcat Migration Tool for Jakarta EE</a></li><li><a href="https://tomcat.apache.org/download-connectors.cgi">Tomcat Connectors</a></li><li><a href="https://tomcat.apache.org/download-native.cgi">Tomcat Native</a></li><li><a href="https://tomcat.apache.org/download-taglibs.cgi">Taglibs</a></li><li><a href="https://archive.apache.org/dist/tomcat/">Archives</a></li></ul></div><div><h2>Documentation</h2><ul><li><a href="./tomcat-11.0-doc/index.html">Tomcat 11.0</a></li><li><a href="./tomcat-10.1-doc/index.html">Tomcat 10.1</a></li><li><a href="./tomcat-9.0-doc/index.html">Tomcat 9.0</a></li><li><a href="./upgrading.html">Upgrading</a></li><li><a href="./connectors-doc/index.html">Tomcat Connectors</a></li><li><a href="./native-doc/index.html">Tomcat Native 2</a></li><li><a href="./native-1.3-doc/index.html">Tomcat Native 1.3</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT">Wiki</a></li><li><a href="./migration.html">Migration Guide</a></li><li><a href="./presentations.html">Presentations</a></li><li><a href="https://cwiki.apache.org/confluence/x/Bi8lBg">Specifications</a></li></ul></div><div><h2>Problems?</h2><ul><li><a href="./security.html">Security Reports</a></li><li><a href="./findhelp.html">Find help</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="./lists.html">Mailing Lists</a></li><li><a href="./bugreport.html">Bug Database</a></li></ul></div><div><h2>Get Involved</h2><ul><li><a href="./getinvolved.html">Overview</a></li><li><a href="./source.html">Source code</a></li><li><a href="./ci.html">Buildbot</a></li><li><a href="./tools.html">Tools</a></li></ul></div><div><h2>Media</h2><ul><li><a href="https://www.youtube.com/c/ApacheTomcatOfficial">YouTube</a></li></ul></div><div><h2>Misc</h2><ul><li><a href="./whoweare.html">Who We Are</a></li><li><a href="https://www.redbubble.com/people/comdev/works/30885254-apache-tomcat">Swag</a></li><li><a href="./heritage.html">Heritage</a></li><li><a href="http://www.apache.org">Apache Home</a></li><li><a href="./resources.html">Resources</a></li><li><a href="./contact.html">Contact</a></li><li><a href="./legal.html">Legal</a></li><li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li><li><a href="https://www.apache.org/foundation/contributing.html">Support Apache</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li><li><a href="http://www.apache.org/licenses/">License</a></li></ul></div></nav></div></div><div id="mainRight"><div id="content"><h2 style="display: none;">Content</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text"> |
| <ul><li><a href="#General">General</a></li><li><a href="#Migrating_from_8.0.x_or_8.5.x_to_9.0.x">Migrating from 8.0.x or 8.5.x to 9.0.x</a><ol><li><a href="#Java_8_required">Java 8 required</a></li><li><a href="#Specification_APIs">Specification APIs</a></li><li><a href="#Servlet_4.0_API">Servlet 4.0 API</a></li><li><a href="#JavaServer_Pages_2.3">JavaServer Pages 2.3</a></li><li><a href="#Expression_Language_3.0">Expression Language 3.0</a></li><li><a href="#WebSocket_1.1">WebSocket 1.1</a></li><li><a href="#BIO_connector_removed">BIO connector removed</a></li><li><a href="#HTTP_connector_changes">HTTP connector changes</a></li><li><a href="#Comet_support_removed">Comet support removed</a></li><li><a href="#HTTP/2_support_added">HTTP/2 support added</a></li><li><a href="#TLS_virtual_hosting_and_multiple_certificate_support_added">TLS virtual hosting and multiple certificate support added</a></li><li><a href="#Internal_APIs">Internal APIs</a></li><li><a href="#JSR-77_implementation_removed">JSR-77 implementation removed</a></li><li><a href="#Clustering">Clustering</a></li><li><a href="#InstanceListener_removed">InstanceListener removed</a></li><li><a href="#SessionManager">SessionManager</a></li><li><a href="#Cookies">Cookies</a></li><li><a href="#Web_applications">Web applications</a></li><li><a href="#Engine_and_Host_configurations">Engine and Host configurations</a></li><li><a href="#Context_configurations">Context configurations</a></li><li><a href="#Logging">Logging</a></li></ol></li><li><a href="#Upgrading_9.0.x">Upgrading 9.0.x</a><ol><li><a href="#Tomcat_9.0.x_noteable_changes">Tomcat 9.0.x noteable changes</a></li><li><a href="#Tomcat_9.0.x_configuration_file_differences">Tomcat 9.0.x configuration file differences</a></li></ol></li></ul> |
| </div><h3 id="General">General</h3><div class="text"> |
| |
| <p>Please read the general <a href="migration.html">Migration Guide page</a> |
| first, for common considerations that apply to migration or upgrade between |
| versions of Apache Tomcat<sup>®</sup>.</p> |
| |
| </div><h3 id="Migrating_from_8.0.x_or_8.5.x_to_9.0.x">Migrating from 8.0.x or 8.5.x to 9.0.x</h3><div class="text"> |
| |
| <p>This section lists all the known changes between 8.0.x / 8.5.x and 9.0.x |
| which may cause backwards compatibility problems when upgrading. Some of |
| these changes and new features are already present in Apache Tomcat 8.5.x.</p> |
| |
| <div class="subsection"><h4 id="Java_8_required">Java 8 required</h4><div class="text"> |
| |
| <p>Apache Tomcat 9.0.x requires Java 8 or later. Apache Tomcat 8.0.x and 8.5.x |
| required Java 7.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="Specification_APIs">Specification APIs</h4><div class="text"> |
| |
| <p>Apache Tomcat 9 supports the Java Servlet 4.0, JavaServer Pages 2.3, |
| Java Unified Expression Language 3.0 and Java API for WebSocket 1.0 |
| <a href="https://cwiki.apache.org/confluence/display/TOMCAT/Specifications">specifications</a>. |
| The changes between versions of specifications may be found in the |
| <em>Changes</em> appendix in each of specification documents. |
| </p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="Servlet_4.0_API">Servlet 4.0 API</h4><div class="text"> |
| |
| <p>In JSP pages that use wildcard import syntax the new classes added in |
| Servlet API may conflict with ones in web applications. |
| For example, if package <code>"a"</code> contains class |
| <code>PushBuilder</code>, the following JSP page will cease to compile in |
| Tomcat 9:</p> |
| |
| <div class="codeBox"><pre><code><%@page import="a.*"%> |
| <% PushBuilder pushBuilder = new PushBuilder(); %></code></pre></div> |
| |
| <p>This happens because the implicit import of |
| <code>javax.servlet.http.*</code> and the explicit import of |
| <code>a.*</code> will provide conflicting definitions of class |
| <code>PushBuilder</code> that was added in Servlet 4.0. The solution is to |
| use the explicit import, <code>import="a.PushBuilder"</code>.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="JavaServer_Pages_2.3">JavaServer Pages 2.3</h4><div class="text"> |
| |
| <p>This is unchanged from Tomcat 8.x.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="Expression_Language_3.0">Expression Language 3.0</h4><div class="text"> |
| |
| <p>This is unchanged from Tomcat 8.x.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="WebSocket_1.1">WebSocket 1.1</h4><div class="text"> |
| |
| <p>This is unchanged from Tomcat 8.x.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="BIO_connector_removed">BIO connector removed</h4><div class="text"> |
| |
| <p><em>The following change is present in 8.5.0 onwards.</em></p> |
| |
| <p>The Java blocking IO implementation (BIO) for both HTTP and AJP has been |
| removed. Users are recommended to switch to the Java non-blocking IO |
| implementation (NIO).</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="HTTP_connector_changes">HTTP connector changes</h4><div class="text"> |
| <p> |
| HTTP reason phrases have been <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=60362#c60">removed</a> |
| entirely. Some non-RFC-compliant clients are known to fail when the |
| reason phrase is missing. Such failures are a problem with the client |
| and not with Tomcat. |
| </p> |
| </div></div> |
| |
| <div class="subsection"><h4 id="Comet_support_removed">Comet support removed</h4><div class="text"> |
| |
| <p><em>The following change is present in 8.5.0 onwards.</em></p> |
| |
| <p>Comet support has been removed without a direct replacement. Applications |
| using Comet are recommended to migrate to WebSockets.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="HTTP/2_support_added">HTTP/2 support added</h4><div class="text"> |
| |
| <p><em>The following feature is available since 8.5.0 onwards.</em></p> |
| |
| <p>HTTP/2 is supported for h2 (over TLS, negotiated via ALPN) and h2c (clear |
| text, negotiated via HTTP/1.1 upgrade). HTTP/2 needs to be explicitly |
| enabled for a connector. To enable it, insert |
| <div class="codeBox"><pre><code><UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /></code></pre></div> |
| inside the connector for which you wish to enable HTTP/2. Note that to |
| enable HTTP/2 for a secure NIO or NIO2 connector, those connectors must be |
| using the OpenSSL engine for TLS.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="TLS_virtual_hosting_and_multiple_certificate_support_added">TLS virtual hosting and multiple certificate support added</h4><div class="text"> |
| |
| <p><em>The following feature is available since 8.5.0 onwards.</em></p> |
| |
| <p>Tomcat 9 supports multiple TLS virtual hosts for a single connector with |
| each virtual host able to support multiple certificates. Virtual host |
| definitions are nested inside the Connector element with the default |
| specified using the <strong>defaultSSLHostConfigName</strong> attribute on the |
| Connector if more than one virtual host is specified. Certificate |
| definitions are nested inside the virtual host.</p> |
| |
| <p>The following example shows how to use this to configure a single |
| APR/native connector for multiple TLS virtual hosts with each host having |
| both an RSA and EC certificate. |
| |
| <div class="codeBox"><pre><code> |
| <Connector port="8443" |
| protocol="org.apache.coyote.http11.Http11AprProtocol" |
| maxThreads="150" |
| SSLEnabled="true" |
| defaultSSLHostConfigName="openoffice.apache.org" > |
| <SSLHostConfig hostName="openoffice.apache.org" > |
| <Certificate certificateKeyFile="conf/openoffice.apache.org-rsa-key.pem" |
| certificateFile="conf/openoffice.apache.org-rsa-cert.pem" |
| type="RSA" /> |
| <Certificate certificateKeyFile="conf/openoffice.apache.org-ec-key.pem" |
| certificateFile="conf/openoffice.apache.org-ec-cert.pem" |
| type="EC" /> |
| </SSLHostConfig> |
| <SSLHostConfig hostName="www.openoffice.org" > |
| <Certificate certificateKeyFile="conf/www.openoffice.org-rsa-key.pem" |
| certificateFile="conf/www.openoffice.org-rsa-cert.pem" |
| type="RSA" /> |
| <Certificate certificateKeyFile="conf/www.openoffice.org-ec-key.pem" |
| certificateFile="conf/www.openoffice.org-ec-cert.pem" |
| type="EC" /> |
| </SSLHostConfig> |
| </Connector> |
| </code></pre></div></p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="Internal_APIs">Internal APIs</h4><div class="text"> |
| |
| <p>Whilst the Tomcat 9 internal API is broadly compatible with Tomcat 8 |
| there have been many changes at the detail level and they are not binary |
| compatible. Developers of custom components that interact with Tomcat's |
| internals should review the JavaDoc for the relevant API.</p> |
| |
| <p>Of particular note are:</p> |
| <ul> |
| <li>Significant refactoring has taken place throughout the connectors to |
| reduce duplicate code and to align behaviour across |
| implementations. (<em>This change is present in 8.5.x.</em>)</li> |
| <li>The deprecated <code>digest</code> attribute has been removed from the |
| <code>Realm</code>. (<em>This change is present in 8.5.x.</em>)</li> |
| </ul> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="JSR-77_implementation_removed">JSR-77 implementation removed</h4><div class="text"> |
| |
| <p><em>The following change is present in 8.5.0 onwards.</em></p> |
| |
| <p>The JSR-77 implementation is incomplete and has been removed in 8.5.x and 9.0.x. |
| Specifically, the following methods that exposed to JMX have been removed. |
| </p> |
| |
| <ul> |
| <li><code>StandardContext.getServlets()</code></li> |
| <li><code>StandardContext.isStateManageable()</code></li> |
| <li><code>StandardContext.getDeploymentDescriptor()</code></li> |
| <li><code>StandardWrapper.isStateManageable()</code></li> |
| </ul> |
| </div></div> |
| |
| <div class="subsection"><h4 id="Clustering">Clustering</h4><div class="text"> |
| |
| <p><em>The following change is present in 8.5.0 onwards.</em></p> |
| |
| <p><code>MessageDispatch15Interceptor</code> had been used to add the Java 5 |
| features to MessageDispatchInterceptor. |
| <code>MessageDispatch15Interceptor</code> has been removed in Tomcat 8.5.x and 9.0.x |
| by merging the Java 5 features to <code>MessageDispatchInterceptor</code>. |
| </p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="InstanceListener_removed">InstanceListener removed</h4><div class="text"> |
| |
| <p><em>The following change is present in 8.5.0 onwards.</em></p> |
| |
| <p>The support of InstanceListener has been removed in 8.5.x and 9.0.x. |
| Specifically, the following classes have been removed. |
| </p> |
| |
| <ul> |
| <li><code>org.apache.catalina.InstanceListener</code></li> |
| <li><code>org.apache.catalina.InstanceEvent</code></li> |
| <li><code>org.apache.catalina.util.InstanceSupport</code></li> |
| </ul> |
| </div></div> |
| |
| <div class="subsection"><h4 id="SessionManager">SessionManager</h4><div class="text"> |
| |
| <p><em>The following change is present in 8.5.0 onwards.</em></p> |
| |
| <p>The following session manager attributes have been completely removed in |
| 8.5.x and 9.0.x.</p> |
| |
| <ul> |
| <li><code>distributable</code></li> |
| <li><code>maxInactiveInterval</code></li> |
| <li><code>sessionIdLength</code></li> |
| </ul> |
| |
| <p>The replacements are as follows:</p> |
| <ul> |
| <li>The <code>distributable</code> attribute has been deprecated in 8.0 |
| and specified value is ignored. This should be configured via the |
| Context. The value is inherited based on the presence or absence of |
| the <code><distributable /></code> element in |
| <code>/WEB-INF/web.xml.</code></li> |
| <li>The <code>maxInactiveInterval</code> attribute has been deprecated in |
| 8.0. If the value is specified, a warning log is issued. This should |
| be configured via the Context. The value is inherited based on the |
| value of the <code><session-timeout></code> element in |
| <code>/WEB-INF/web.xml</code>.</li> |
| <li>The <code>sessionIdLength</code> attribute of <code>Manager</code> has |
| been replaced by <code>sessionIdLength</code> attribute of |
| <code>SessionIdGenerator</code>.</li> |
| </ul> |
| </div></div> |
| |
| <div class="subsection"><h4 id="Cookies">Cookies</h4><div class="text"> |
| |
| <p>The default <code>CookieProcessor</code> is now the |
| <code>Rfc6265CookieProcessor</code>. The <code>CookieProcessor</code> is |
| configurable per <code>Context</code> and the |
| <code>LegacyCookieProcessor</code> may be used to obtain the 8.0.x |
| behaviour.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="Web_applications">Web applications</h4><div class="text"> |
| |
| <p>The Manager and HostManager web applications are configured by default |
| with a <code>RemoteAddrValve</code> that limits access to those |
| applications to connections from localhost.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="Engine_and_Host_configurations">Engine and Host configurations</h4><div class="text"> |
| |
| <p>The behaviour for <code>startStopThreads</code> has changed when the |
| effective value is 1. In this case, children will be started on the current |
| thread rather than via an <code>ExecutorService</code> configured with a |
| single thread.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="Context_configurations">Context configurations</h4><div class="text"> |
| |
| <p>The <code>clearReferencesStatic</code> attribute has been removed in |
| 8.5.x and 9.0.x.</p> |
| |
| </div></div> |
| |
| <div class="subsection"><h4 id="Logging">Logging</h4><div class="text"> |
| |
| <p>By default the log files will be kept 90 days and then removed from the |
| file system.</p> |
| |
| </div></div> |
| |
| </div><h3 id="Upgrading_9.0.x">Upgrading 9.0.x</h3><div class="text"> |
| |
| <p>When upgrading instances of Apache Tomcat from one version of Tomcat 9 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 9.</p> |
| |
| <div class="subsection"><h4 id="Tomcat_9.0.x_noteable_changes">Tomcat 9.0.x noteable changes</h4><div class="text"> |
| <p>The Tomcat developers aim for each patch release to be fully backwards |
| compatible with the previous release. Occasionally, it is necessary to |
| break backwards compatibility in order to fix a bug. In most cases, these |
| changes will go unnoticed. This section lists changes that are not fully |
| backwards compatible and might cause breakage when upgrading.</p> |
| <ul> |
| <li> |
| In 9.0.96, a change was made to the way pooled JSP tags were released, |
| resulting in a binary incompatiblity between some JSP files compiled |
| with earlier versions of Apache Tomcat 9. This incompatibility will be |
| corrected in 9.0.97, so JSPs compiled <i>before</i> 9.0.96 should again |
| run without recompilation in 9.0.97 and later. |
| </li> |
| <li> |
| In 9.0.74 onwards, the default value for the Connector attribute |
| <code>maxParameterCount</code> has been reduced from 10,000 to 1,000. |
| </li> |
| <li><p>In 9.0.31 onwards, the default listen <strong>address</strong> of |
| the AJP Connector was changed to the loopback address rather than all |
| addresses.</p> |
| <p>Reference: <a href="tomcat-9.0-doc/config/ajp.html">AJP |
| connector</a>.</p> |
| </li> |
| <li><p>In 9.0.31 onwards, the <strong>requiredSecret</strong> attribute |
| of the AJP Connector was deprecated and replaced by the |
| <strong>secret</strong> attribute.</p> |
| <p>Reference: <a href="tomcat-9.0-doc/config/ajp.html">AJP |
| connector</a>.</p> |
| </li> |
| <li><p>In 9.0.31 onwards, the <strong>secretRequired</strong> attribute |
| was added to the AJP Connector. If set to <code>true</code>, the |
| default, the AJP Connector will not start unless a |
| <strong>secret</strong> has been specified.</p> |
| <p>Reference: <a href="tomcat-9.0-doc/config/ajp.html">AJP |
| connector</a>.</p> |
| </li> |
| <li><p>In 9.0.31 onwards, the |
| <strong>allowedRequestAttributesPattern</strong> attribute was added to |
| the AJP Connector. Requests with unrecognised attributes will now be |
| blocked with a 403.</p> |
| <p>Reference: <a href="tomcat-9.0-doc/config/ajp.html">AJP |
| connector</a>.</p> |
| </li> |
| <li><p>In 9.0.44 onwards, the semantics of the |
| <code>HostConfig.check(String)</code> method have changed. Rather than |
| marking the application as serviced before calling the method, the |
| method will mark the application as serviced before checking |
| resources and then un-mark the application as being serviced after the |
| checks are complete. If the application is marked as serviced when the |
| method is called, the method will be a NO-OP.</p> |
| </li> |
| <li><p>In 9.0.48 onwards, the NIO poller was simplified and the block |
| poller and selector configuration has been removed. This will not |
| cause a startup error if they are present in the configuration, but |
| may produce a warning and will have no effect.</p> |
| </li> |
| <li><p>In 9.0.51 onwards, Tomcat no longer adds an "Expires" HTTP |
| response header when adding "Cache-Control: private" due to a |
| CONFIDENTIAL transport-guarantee. This will likely cause a change |
| in caching behavior for applications that do not explicitly set |
| their own headers but rely on Tomcat's previous behavior. If you |
| wish to disable caching, you will need to configure it explicitly |
| in your application. See <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=65513">BZ 65513</a> |
| for more information.</p> |
| </li> |
| <li><p>In 9.0.53 onwards, as a result of the updated fork of Commons |
| FileUpload now using <code>java.nio.file.Files</code>, applications |
| using multi-part uploads need to ensure that the JVM is configured with |
| sufficient direct memory to store all in progress multi-part |
| uploads.</p> |
| </li> |
| <li><p>In 9.0.56 onwards, the system property |
| <code>org.apache.juli.AsyncLoggerPollInterval</code> is no longer |
| used.</p> |
| </li> |
| <li> |
| In 9.0.109, a release packaging error caused some support classes |
| for FileStore to be missing from the release. You should avoid 9.0.109 |
| if you use the FileStore session mechanism. |
| </li> |
| <li> |
| In 9.0.114 onwards, the minimum Tomcat Native version is 1.3.4 for |
| Tomcat Native 1.3.x and 2.0.12 for Tomcat Native 2.0.x. |
| </li> |
| <li> |
| Tomcat 9.0.119 introduces a <b>breaking change</b> for users of the |
| <code>EncryptInterceptor</code> in their clustering configuration. |
| Migration from prior-to-Tomcat-9.0.119 to after-Tomcat-9.0.119 |
| will require that <i>all</i> cluster nodes are stopped and restarted |
| to perform the migration. There is an additional, required, piece of |
| data that is being introduced into the cluster data stream for |
| <code>EncryptInterceptor</code> and nodes running any older versions |
| will fail to send or receive cluster messages. |
| </li> |
| </ul> |
| </div></div> |
| |
| <div class="subsection"><h4 id="Tomcat_9.0.x_configuration_file_differences">Tomcat 9.0.x configuration file differences</h4><div class="text"> |
| |
| <p>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.</p> |
| |
| <p><b>Note:</b> If there are no differences you will see an error page.</p> |
| |
| <form action="https://gitbox.apache.org/filediff" method="get" target="_blank"> |
| |
| <input type="hidden" name="repo" value="tomcat.git"> |
| |
| <p><label>Configuration file: |
| <select name="file"> |
| <option value="conf" selected>All configuration files</option> |
| <option value="conf/catalina.policy">catalina.policy</option> |
| <option value="conf/catalina.properties">catalina.properties</option> |
| <option value="conf/context.xml">context.xml</option> |
| <option value="conf/logging.properties">logging.properties</option> |
| <option value="conf/server.xml">server.xml</option> |
| <option value="conf/tomcat-users.xml">tomcat-users.xml</option> |
| <option value="conf/web.xml">web.xml</option> |
| </select></label> |
| </p> |
| <p><label>Old version: |
| <select name="origin"> |
| <option value="9.0.0-M1">9.0.0-M1</option> |
| <option value="9.0.0-M3">9.0.0-M3</option> |
| <option value="9.0.0-M4">9.0.0-M4</option> |
| <option value="9.0.0-M6">9.0.0-M6</option> |
| <option value="9.0.0-M8">9.0.0-M8</option> |
| <option value="9.0.0-M9">9.0.0-M9</option> |
| <option value="9.0.0-M10">9.0.0-M10</option> |
| <option value="9.0.0-M11">9.0.0-M11</option> |
| <option value="9.0.0-M13">9.0.0-M13</option> |
| <option value="9.0.0-M15">9.0.0-M15</option> |
| <option value="9.0.0-M17">9.0.0-M17</option> |
| <option value="9.0.0-M18">9.0.0-M18</option> |
| <option value="9.0.0-M19">9.0.0-M19</option> |
| <option value="9.0.0-M20">9.0.0-M20</option> |
| <option value="9.0.0-M21">9.0.0-M21</option> |
| <option value="9.0.0-M22">9.0.0-M22</option> |
| <option value="9.0.0-M26">9.0.0-M26</option> |
| <option value="9.0.1">9.0.1</option> |
| <option value="9.0.2">9.0.2</option> |
| <option value="9.0.4">9.0.4</option> |
| <option value="9.0.5">9.0.5</option> |
| <option value="9.0.6">9.0.6</option> |
| <option value="9.0.7">9.0.7</option> |
| <option value="9.0.8">9.0.8</option> |
| <option value="9.0.10">9.0.10</option> |
| <option value="9.0.11">9.0.11</option> |
| <option value="9.0.12">9.0.12</option> |
| <option value="9.0.13">9.0.13</option> |
| <option value="9.0.14">9.0.14</option> |
| <option value="9.0.16">9.0.16</option> |
| <option value="9.0.17">9.0.17</option> |
| <option value="9.0.19">9.0.19</option> |
| <option value="9.0.20">9.0.20</option> |
| <option value="9.0.21">9.0.21</option> |
| <option value="9.0.22">9.0.22</option> |
| <option value="9.0.24">9.0.24</option> |
| <option value="9.0.26">9.0.26</option> |
| <option value="9.0.27">9.0.27</option> |
| <option value="9.0.28">9.0.28</option> |
| <option value="9.0.30">9.0.30</option> |
| <option value="9.0.31">9.0.31</option> |
| <option value="9.0.33">9.0.33</option> |
| <option value="9.0.34">9.0.34</option> |
| <option value="9.0.35">9.0.35</option> |
| <option value="9.0.36">9.0.36</option> |
| <option value="9.0.37">9.0.37</option> |
| <option value="9.0.38">9.0.38</option> |
| <option value="9.0.39">9.0.39</option> |
| <option value="9.0.40">9.0.40</option> |
| <option value="9.0.41">9.0.41</option> |
| <option value="9.0.43">9.0.43</option> |
| <option value="9.0.44">9.0.44</option> |
| <option value="9.0.45">9.0.45</option> |
| <option value="9.0.46">9.0.46</option> |
| <option value="9.0.48">9.0.48</option> |
| <option value="9.0.50">9.0.50</option> |
| <option value="9.0.52">9.0.52</option> |
| <option value="9.0.53">9.0.53</option> |
| <option value="9.0.54">9.0.54</option> |
| <option value="9.0.55">9.0.55</option> |
| <option value="9.0.56">9.0.56</option> |
| <option value="9.0.58">9.0.58</option> |
| <option value="9.0.59">9.0.59</option> |
| <option value="9.0.60">9.0.60</option> |
| <option value="9.0.62">9.0.62</option> |
| <option value="9.0.63">9.0.63</option> |
| <option value="9.0.64">9.0.64</option> |
| <option value="9.0.65">9.0.65</option> |
| <option value="9.0.67">9.0.67</option> |
| <option value="9.0.68">9.0.68</option> |
| <option value="9.0.69">9.0.69</option> |
| <option value="9.0.70">9.0.70</option> |
| <option value="9.0.71">9.0.71</option> |
| <option value="9.0.72">9.0.72</option> |
| <option value="9.0.73">9.0.73</option> |
| <option value="9.0.74">9.0.74</option> |
| <option value="9.0.75">9.0.75</option> |
| <option value="9.0.76">9.0.76</option> |
| <option value="9.0.78">9.0.78</option> |
| <option value="9.0.79">9.0.79</option> |
| <option value="9.0.80">9.0.80</option> |
| <option value="9.0.81">9.0.81</option> |
| <option value="9.0.82">9.0.82</option> |
| <option value="9.0.83">9.0.83</option> |
| <option value="9.0.84">9.0.84</option> |
| <option value="9.0.85">9.0.85</option> |
| <option value="9.0.86">9.0.86</option> |
| <option value="9.0.87">9.0.87</option> |
| <option value="9.0.88">9.0.88</option> |
| <option value="9.0.89">9.0.89</option> |
| <option value="9.0.90">9.0.90</option> |
| <option value="9.0.91">9.0.91</option> |
| <option value="9.0.93">9.0.93</option> |
| <option value="9.0.94">9.0.94</option> |
| <option value="9.0.95">9.0.95</option> |
| <option value="9.0.96">9.0.96</option> |
| <option value="9.0.97">9.0.97</option> |
| <option value="9.0.98">9.0.98</option> |
| <option value="9.0.99">9.0.99</option> |
| <option value="9.0.100">9.0.100</option> |
| <option value="9.0.102">9.0.102</option> |
| <option value="9.0.104">9.0.104</option> |
| <option value="9.0.105">9.0.105</option> |
| <option value="9.0.106">9.0.106</option> |
| <option value="9.0.107">9.0.107</option> |
| <option value="9.0.108">9.0.108</option> |
| <option value="9.0.109">9.0.109</option> |
| <option value="9.0.110">9.0.110</option> |
| <option value="9.0.111">9.0.111</option> |
| <option value="9.0.112">9.0.112</option> |
| <option value="9.0.113">9.0.113</option> |
| <option value="9.0.115">9.0.115</option> |
| <option value="9.0.116">9.0.116</option> |
| <option value="9.0.117">9.0.117</option> |
| <option value="9.0.118">9.0.118</option> |
| <option value="9.0.119">9.0.119</option> |
| <option value="9.0.120" selected>9.0.120</option> |
| </select>,</label> <label>new version: |
| <select name="target"> |
| <option value="9.0.0-M1">9.0.0-M1</option> |
| <option value="9.0.0-M3">9.0.0-M3</option> |
| <option value="9.0.0-M4">9.0.0-M4</option> |
| <option value="9.0.0-M6">9.0.0-M6</option> |
| <option value="9.0.0-M8">9.0.0-M8</option> |
| <option value="9.0.0-M9">9.0.0-M9</option> |
| <option value="9.0.0-M10">9.0.0-M10</option> |
| <option value="9.0.0-M11">9.0.0-M11</option> |
| <option value="9.0.0-M13">9.0.0-M13</option> |
| <option value="9.0.0-M15">9.0.0-M15</option> |
| <option value="9.0.0-M17">9.0.0-M17</option> |
| <option value="9.0.0-M18">9.0.0-M18</option> |
| <option value="9.0.0-M19">9.0.0-M19</option> |
| <option value="9.0.0-M20">9.0.0-M20</option> |
| <option value="9.0.0-M21">9.0.0-M21</option> |
| <option value="9.0.0-M22">9.0.0-M22</option> |
| <option value="9.0.0-M26">9.0.0-M26</option> |
| <option value="9.0.1">9.0.1</option> |
| <option value="9.0.2">9.0.2</option> |
| <option value="9.0.4">9.0.4</option> |
| <option value="9.0.5">9.0.5</option> |
| <option value="9.0.6">9.0.6</option> |
| <option value="9.0.7">9.0.7</option> |
| <option value="9.0.8">9.0.8</option> |
| <option value="9.0.10">9.0.10</option> |
| <option value="9.0.11">9.0.11</option> |
| <option value="9.0.12">9.0.12</option> |
| <option value="9.0.13">9.0.13</option> |
| <option value="9.0.14">9.0.14</option> |
| <option value="9.0.16">9.0.16</option> |
| <option value="9.0.17">9.0.17</option> |
| <option value="9.0.19">9.0.19</option> |
| <option value="9.0.20">9.0.20</option> |
| <option value="9.0.21">9.0.21</option> |
| <option value="9.0.22">9.0.22</option> |
| <option value="9.0.24">9.0.24</option> |
| <option value="9.0.26">9.0.26</option> |
| <option value="9.0.27">9.0.27</option> |
| <option value="9.0.29">9.0.29</option> |
| <option value="9.0.30">9.0.30</option> |
| <option value="9.0.31">9.0.31</option> |
| <option value="9.0.33">9.0.33</option> |
| <option value="9.0.34">9.0.34</option> |
| <option value="9.0.35">9.0.35</option> |
| <option value="9.0.36">9.0.36</option> |
| <option value="9.0.37">9.0.37</option> |
| <option value="9.0.38">9.0.38</option> |
| <option value="9.0.39">9.0.39</option> |
| <option value="9.0.40">9.0.40</option> |
| <option value="9.0.41">9.0.41</option> |
| <option value="9.0.43">9.0.43</option> |
| <option value="9.0.44">9.0.44</option> |
| <option value="9.0.45">9.0.45</option> |
| <option value="9.0.46">9.0.46</option> |
| <option value="9.0.48">9.0.48</option> |
| <option value="9.0.50">9.0.50</option> |
| <option value="9.0.52">9.0.52</option> |
| <option value="9.0.53">9.0.53</option> |
| <option value="9.0.54">9.0.54</option> |
| <option value="9.0.55">9.0.55</option> |
| <option value="9.0.56">9.0.56</option> |
| <option value="9.0.58">9.0.58</option> |
| <option value="9.0.59">9.0.59</option> |
| <option value="9.0.60">9.0.60</option> |
| <option value="9.0.62">9.0.62</option> |
| <option value="9.0.63">9.0.63</option> |
| <option value="9.0.64">9.0.64</option> |
| <option value="9.0.65">9.0.65</option> |
| <option value="9.0.67">9.0.67</option> |
| <option value="9.0.68">9.0.68</option> |
| <option value="9.0.69">9.0.69</option> |
| <option value="9.0.70">9.0.70</option> |
| <option value="9.0.71">9.0.71</option> |
| <option value="9.0.72">9.0.72</option> |
| <option value="9.0.73">9.0.73</option> |
| <option value="9.0.74">9.0.74</option> |
| <option value="9.0.75">9.0.75</option> |
| <option value="9.0.76">9.0.76</option> |
| <option value="9.0.78">9.0.78</option> |
| <option value="9.0.79">9.0.79</option> |
| <option value="9.0.80">9.0.80</option> |
| <option value="9.0.81">9.0.81</option> |
| <option value="9.0.82">9.0.82</option> |
| <option value="9.0.83">9.0.83</option> |
| <option value="9.0.84">9.0.84</option> |
| <option value="9.0.85">9.0.85</option> |
| <option value="9.0.86">9.0.86</option> |
| <option value="9.0.87">9.0.87</option> |
| <option value="9.0.88">9.0.88</option> |
| <option value="9.0.89">9.0.89</option> |
| <option value="9.0.90">9.0.90</option> |
| <option value="9.0.91">9.0.91</option> |
| <option value="9.0.93">9.0.93</option> |
| <option value="9.0.94">9.0.94</option> |
| <option value="9.0.95">9.0.95</option> |
| <option value="9.0.96">9.0.96</option> |
| <option value="9.0.97">9.0.97</option> |
| <option value="9.0.98">9.0.98</option> |
| <option value="9.0.99">9.0.99</option> |
| <option value="9.0.100">9.0.100</option> |
| <option value="9.0.102">9.0.102</option> |
| <option value="9.0.104">9.0.104</option> |
| <option value="9.0.105">9.0.105</option> |
| <option value="9.0.106">9.0.106</option> |
| <option value="9.0.107">9.0.107</option> |
| <option value="9.0.108">9.0.108</option> |
| <option value="9.0.109">9.0.109</option> |
| <option value="9.0.110">9.0.110</option> |
| <option value="9.0.111">9.0.111</option> |
| <option value="9.0.112">9.0.112</option> |
| <option value="9.0.113">9.0.113</option> |
| <option value="9.0.115">9.0.115</option> |
| <option value="9.0.116">9.0.116</option> |
| <option value="9.0.117">9.0.117</option> |
| <option value="9.0.118">9.0.118</option> |
| <option value="9.0.119">9.0.119</option> |
| <option value="9.0.120">9.0.120</option> |
| <option value="9.0.121" selected>9.0.121</option> |
| <option value="HEAD">trunk (unreleased)</option> |
| </select></label> |
| </p> |
| |
| <p> |
| <button>View Differences</button> |
| </p> |
| </form> |
| <p>You can also use a Git command similar to the following from within a |
| working copy:</p> |
| <div class="codeBox"><pre><code>git diff 9.0.0 9.0.12 -- conf/</code></pre></div> |
| </div></div> |
| |
| </div></div></div></div></main><footer id="footer"> |
| Copyright © 1999-2026, The Apache Software Foundation |
| <br> |
| Apache Tomcat, Tomcat, Apache, the Apache Tomcat logo and the Apache logo |
| are either registered trademarks or trademarks of the Apache Software |
| Foundation. |
| </footer></div><script src="res/js/tomcat.js"></script></body></html> |