Tomcat 8.5.2


  • Fix: Ensure that annotated web components packed in web fragments will be processed when unpackWARs is enabled. (violetagg)

not released Tomcat 8.5.1


  • Fix: 59206: Ensure NPE will not be thrown by o.a.tomcat.util.file.ConfigFileLoader when catalina.base is not specified. (violetagg)
  • Fix: 59217: Remove duplication in the recycling of the path in o.a.tomcat.util.http.ServerCookie. Patch is provided by Kyohei Nakamura. (violetagg)
  • Fix: Fixed possible NPE in o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream (violetagg)
  • Fix: 59213: Async dispatches should be based off a wrapped request. (remm)
  • Fix: Ensure that javax.servlet.ServletRequest and javax.servlet.ServletResponse provided during javax.servlet.AsyncListener registration are made available via javax.servlet.AsyncEvent.getSuppliedRequest and javax.servlet.AsyncEvent.getSuppliedResponse (violetagg)
  • Fix: 59219: Ensure AsyncListener.onError() is called if an Exception is thrown during async processing. (markt)
  • Fix: 59220: Ensure that AsyncListener.onComplete() is called if the async request times out and the response is already committed. (markt)
  • Fix: 59226: Process the Class-Path attribute from JAR manifests for JARs on the class path excluding JARs packaged in WEB-INF/lib. (markt)
  • Fix: 59255: Fix possible NPE in mapper. (kkolinko/remm)
  • Fix: 59256: slf4j-taglib*.jar should not be excluded from the standard JAR scanning by default. (violetagg)
  • Fix: Clarify in the log message that specifying both urlPatterns and value attributes in WebServlet and WebFilter annotations is not allowed. (violetagg)
  • Fix: Ensure the exceptions caused by Valves will be available in the log files so that they can be evaluated when o.a.catalina.valves.ErrorReportValve.showReport is disabled. Patch is provided by Svetlin Zarev. (violetagg)
  • Fix: Remove unused distributable attribute that is defined as TransientAttribute of Manager in StoreConfig. (kfujino)
  • Fix: Fix handling of Cluster Receiver in StoreConfig. The bind and host attributes define as TransientAttribute. (kfujino)
  • Fix: 59261: ServletRequest.getAsyncContext() now throws an IllegalStateException as required by the Servlet specification if the request is not in asynchronous mode when called. (markt)
  • Fix: 59269: Correct the implementation of PersistentManagerBase so that minIdleSwap functions as designed and sessions are swapped out to keep the active session count below maxActiveSessions. (markt)
  • Add: Add the org.apache.catalina.servlet4preview package that can be used to gain early access to Servlet 4.0 features. Note that this package will not be present in Tomcat 9. (markt)
  • Fix: Correctly configure the base path for a resources directory provided by an expanded JAR file. Patch provided by hengyunabc. (markt)
  • Add: When multiple compressed formats are available and the client does not express a preference, use the server order to determine the preferred format. Based on a patch by gmokki. (markt)
  • Fix: 59284: Allow the Tomcat provided JASPIC SimpleServerAuthConfig to pick up module configuration properties from either the property set passed to its constructor or from the properties passed in the call to getAuthContext. Based on a patch by Thomas Maslen. (markt)
  • Fix: 59310: Do not add a Content-Length: 0 header for custom responses to HEAD requests that do not set a Content-Length value. (markt)
  • Fix: When normalizing paths, improve the handling when paths end with /. or /.. and ensure that input and output are consistent with respect to whether or not they end with /. (markt)
  • Fix: 59317: Ensure that HttpServletRequest.getRequestURI() returns an encoded URI rather than a decoded URI after a dispatch. (markt)
  • Fix: Use the correct URL for the fragment when reporting errors processing a web-fragment.xml file from a JAR located in an unpacked WAR. (markt)
  • Fix: Ensure that JarScanner only uses the explicit call-back to process WEB-INF/classes and only when configured to treat the contents of WEB-INF/classes as a possible exploded JAR. (markt)
  • Code: Remove the java2DDisposerProtection option from the JreMemoryLeakPreventionListener. The leak is fixed in Java 7 onwards and Tomcat 8 requires Java 7 so the option is unnecessary. (markt)
  • Fix: Ensure that the value for the header X-Frame-Options is constructed correctly according to the specification when ALLOW-FROM option is used. (violetagg)
  • Fix: Fix an IllegalArgumentException if the first use of an internal Response object requires JASPIC authentication. (markt)
  • Fix: Do not trigger unnecessary session ID changes when using JASPIC and the user is authenticated using cached credentials. (markt)
  • Fix: 59437: Ensure that the JASPIC CallbackHandler is thread-safe. (markt)
  • Fix: 59449: In ContainerBase, ensure that the process to remove a child container is the reverse of the process to add one. Patch provided by Huxing Zhang. (markt)


  • Fix: Align cipher configuration parsing with current OpenSSL master. (markt)
  • Update: Change the default for honorCipherOrder to false. With the current default TLS configuration, it is no longer necessary for this to be true for a reasonably secure configuration. (markt)
  • Add: Add a new environment variable JSSE_OPTS that is intended to be used to pass JVM wide configuration to the JSSE implementation. The default value is -Djdk.tls.ephemeralDHKeySize=2048 which protects against weak Diffie-Hellman keys. (markt)
  • Fix: When running on Java 7, exclude DHE ciphers from the default cipher list for JSSE connectors since they use weak 768 bit DH keys and cannot be configured to use more secure keys. (markt)
  • Fix: 58970: Fix a connection counting bug in the NIO connector that meant some dropped connections were not removed from the current connection count. (markt)
  • Fix: 59289: Do not recycle upgrade processors in unexpected close situations. (remm)
  • Fix: 59295: Use Locale.toLanguageTag() to construct the Content-Language HTTP header to ensure the locale is correctly represented. Patch provided by zikfat. (markt)
  • Update: 59295: Add support for using pem encoded certificates with JSSE SSL. Submitted by Emmanuel Bourg with additional tweaks. (remm)
  • Fix: Make the TLS certificate chain available to clients when using JSSE+OpenSSL with the certificate chain stored in a Java KeyStore. (markt)
  • Fix: Work around a known issue in OpenSSL that does not permit the TLS handshake to be failed if the ALPN negotiation fails. (markt)
  • Update: 59421: Add direct HTTP/2 connection support. (remm)
  • Fix: Correctly handle a call to AsyncContext.complete() from a non-container thread when non-blocking I/O is being used. (markt)
  • Fix: 59451: Correct Javadoc for MessageBytes. Patch provided by Kyohei Nakamura. (markt)
  • Fix: 59450: Correctly handle the case where the LegacyCookieProcessor is configured with allowHttpSepsInV0 set to false and forwardSlashIsSeparator set to true. Patch provided by Kyohei Nakamura. (markt)


  • Fix: When scanning JARs for TLDs, correctly handle the (rare) case where a JAR has been exploded into WEB-INF/classes and the web application is deployed as a packed WAR. (markt)
  • Fix: NPEs with not found TLDs. (remm)


  • Fix: 59189: Explicitly release the native memory held by the Inflater and Deflater when using PerMessageDeflate and the WebSocket session ends. Based on a patch by Henrik Olsson. (markt)
  • Fix: Return back a container specific extension to the WsServerContainer to allow frameworks to more easily dispatch requests to WebSocket endpoints. (violetagg)
  • Fix: Fix a regression caused by the connector refactoring and ensure that the thread context class loader is set to the to the web application classloader when processing WebSocket messages on the server. (markt)
  • Fix: Ensure that a client disconnection triggers the error handling for the associated WebSocket end point. (markt)
  • Add: Make WebSocket client more robust when handling errors during the close of a WebSocket session. (markt)

Web applications

  • Fix: 59210: Server push example has to use o.a.catalina.connector.RequestFacade when obtaining o.a.catalina.core.ApplicationPushBuilder. Patch is provided by Huxing Zhang. (violetagg)
  • Fix: 59218: Correct the path to jaspic-providers.xml in Jaspic How-To. Patch is provided by Tatsuya Bessho. (violetagg)
  • Fix: Remove button that has accidentally been added to the host manager. Submitted by Coty Sutherland. (remm)
  • Fix: Update in the documentation the link to the maven repository where Tomcat snapshot artifacts are deployed. (markt/violetagg)
  • Fix: Clarify in the documentation that calls to ServletContext.log(String, Throwable) or GenericServlet.log(String, Throwable) are logged at the SEVERE level. (violetagg)
  • Fix: Correct a typo in SSL/TLS Configuration How-To. Issue reported via (violetagg)


  • Fix: Avoid NPE when a proxy node failed to retrieve a backup entry. (kfujino)
  • Add: Add log of when received an unexpected messages. (kfujino)
  • Add: Add the flag indicating that member is a localMember. (kfujino)
  • Fix: Fix potential NPE that depends on the setting order of attributes of static member when using the static cluster. (kfujino)
  • Add: Add get/set method for the channel that is related to ChannelInterceptor. (kfujino)
  • Fix: As with the multicast cluster environment, in the static cluster environment, the local member inherits properties from the cluster receiver. (kfujino)
  • Add: Add get/set method for the channel that is related to each Channel services. (kfujino)
  • Add: Add name to channel in order to identify channels. In tomcat cluster environment, it is set the cluster name + "-Channel" as default value. (kfujino)
  • Add: Add the channel name to the thread which is invoked by channel services in order to identify the associated channel. (kfujino)
  • Fix: Ensure that clear the channel instance from channel services when stopping channel. (kfujino)
  • Add: Implement map state in the replication map. (kfujino)
  • Fix: Ensure that the ping is not executed during the start/stop of the replication map. (kfujino)
  • Fix: In ping processing in the replication map, send not the INIT message but the newly introduced PING message. (kfujino)


  • Fix: 59209: Remove honorCipherOrder=false attribute from the connector example in server.xml. When the block is uncommented the connector will use the default value for this attribute which is false. If one needs to enable it, one can add it explicitly to the connector definition. Use of this feature requires Java 8 or later. Patch is provided by Huxing Zhang. (violetagg)
  • Fix: 59211: Add hamcrest to Eclipse classpath. Patch is provided by Huxing Zhang. (violetagg)
  • Update: 59280: Update the NSIS Installer used to build the Windows Installers to version 2.51. (kkolinko)
  • Update: Update the packaged version of the Tomcat Native Library to 1.2.7 to pick up the Windows binaries that are based on OpenSSL 1.0.2h and APR 1.5.2. (markt)

2016-03-24 Tomcat 8.5.0


  • Add: The Tomcat 8.5.x branch was created from the Tomcat 9.0.0.M4 tag. Changes were applied to restore Java 7 compatibility and to align the specification APIs with Servlet 3.1, JSP 2.3, EL 3.0, WebSocket 1.1 and JASPIC 1.1.