Changelog
Tomcat 10.1.49 (schultz)
Catalina
- Fix:
When generating the class path in the Loader, re-order the check on
individual class path components to avoid a potential
NullPointerException. Identified by Coverity Scan. (markt) - Fix: Fix SSL socket factory configuration in the JNDI realm. Based on pull request #915 by Joshua Rogers. (remm)
- Update:
Add an attribute,
digestInRfc3112Order, toMessageDigestCredentialHandlerto control the order in which the credential and salt are digested. By default, the current, non-RFC 3112 compliant, order of salt then credential will be used. This default will change in Tomcat 12 to the RFC 3112 compliant order of credential then salt. (markt)
Coyote
- Fix: Graceful failure for OCSP on BoringSSL in the FFM code. (remm)
- Fix:
Fix use of
deferAcceptattribute in JMX, since it is normally only removed in Tomcat 11. (remm) - Fix: 69866: Fix a memory leak when using a trust store with the OpenSSL provider. Pull request #912 by aogburn. (markt)
- Fix: Fix potential crash on shutdown when a Connector depends on the Tomcat Native library. (markt)
- Fix: Fix AJP message length check. Pull request #916 by Joshua Rogers. (remm)
Jasper
- Fix: 69862: Avoid NPE unwrapping Servlet exception which would hide some exception details. Patch submitted by Eric Blanquer. (remm)
Other
- Update: Update the internal fork of Apache Commons BCEL to 6.11.0. (markt)
- Update: Update to Byte Buddy 1.17.8. (markt)
- Update: Update to Checkstyle 12.1.1. (markt)
- Update: Update to Jacoco 0.8.14. (markt)
- Update: Update to SpotBugs 4.9.8. (markt)
- Update: Update to JSign 7.4. (markt)
- Update: Update Maven Resolver Ant Tasks to 1.6.0. (rjung)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations provided by tak7iji. (markt)
2025年10月13日 Tomcat 10.1.48 (schultz)
Catalina
- Fix: Log warnings when the SSO configuration does not comply with the documentation. (remm)
- Update:
Deprecate the
RemoteAddrFilterandRemoteAddrValvein favour of theRemoteCIDRFilterandRemoteCIDRValve. (markt) - Fix: 69837: Fix corruption of the class path generated by the Loader when running on Windows. (markt)
- Fix: Reject requests that map to invalid Windows file names earlier. (markt)
- Fix: 69839: Ensure that changes to session IDs (typically after authentication) are promulgated to the SSO Valve to ensure that SSO entries are fully clean-up on session expiration. Patch provided by Kim Johan Andersson. (markt)
- Fix:
Fix a race condition in the creation of the storage location for the
FileStore. (markt)
Coyote
- Fix: 69848: Fix copy/paste errors in 10.1.47 that meant DELETE requests received via the AJP connector were processed as OPTIONS requests and PROPFIND requests were processed as TRACE. (markt)
- Fix: Various OCSP processing issues in the OpenSSL FFM code. (dsoumis)
WebSocket
- Fix:
69845: When using
permessage-deflatewith Java 25 onwards, handle the underlyingInflaterand/orDeflaterthrowingIllegalStateExceptionwhen closed rather thanNullPointerExceptionas they do in Java 24 and earlier. (markt)
2025年10月07日 Tomcat 10.1.47 (schultz)
Catalina
- Fix: HTTP methods are case-sensitive so always use case sensitive comparisons when comparing HTTP methods. (markt)
- Fix:
69814: Ensure that
HttpSession.isNew()returnsfalseonce the client has joined the session. (markt) - Fix: Further performance improvements for ParameterMap. (jengebr/markt)
- Code:
Refactor access log time stamps to be based on the
Instantrequest processing starts. (markt) - Fix: Fix a case-sensitivity issue in the trailer header allow list. (markt)
- Fix: Be proactive in cleaning up temporary files after a failed multi-part upload rather than waiting for GC to do it. (markt)
Coyote
- Update:
Add specific certificate selection code for TLS 1.3 supporting post
quantum cryptography. Certificates defined with type
MLDSAwill be selected depending on the TLS client hello. (remm) - Update:
Add
groupsattribute onSSLHostConfigallowing to restrict which groups can be enabled on the SSL engine. (remm) - Add: Optimize the conversion of HTTP method from byte form to String form. (markt)
- Fix: Store HTTP request headers using the original case for the header name rather than forcing it to lower case. (markt)
Cluster
- Fix: Prevent the channel configuration (sender, receiver, membership service) from being changed unless the channel is fully stopped. (markt)
Web applications
- Fix:
Documentation. Clarify the purpose of the
maxPostSizeattribute of theConnectorelement. (markt) - Fix: Avoid NPE in manager webapp displaying certificate information. (remm)
Other
- Update: Update Byte Buddy to 1.17.7. (markt)
- Update: Update Checkstyle to 11.1.0. (markt)
- Update: Update SpotBugs to 4.9.6. (markt)
- Update: Update Jsign to 7.2. (markt)
- Add: Improvements to Russian translations provided by usmazat. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations provided by tak7iji. (markt)
- Update: Minor refactoring in JULI loggers. Patch provided by minjund. (schultz)
2025年09月12日 Tomcat 10.1.46 (schultz)
Catalina
- Update: Change the digest used to calculate strong ETags (if enabled) for the default Servlet from SHA-1 to SHA-256 to align with the recommendation in RFC 9110 that hash functions used to generate strong ETags should be collision resistant. (markt)
- Fix:
Correct a regression in the fix for 69781 that broke
FileStore. (markt)
Coyote
- Update:
Add hybrid PQC support to OpenSSL, based on code from
mod_ssl. Using this OpenSSL specific code path, additional PQC certificates defined with typeMLDSAare added to contexts which use classic certificates. (jfclere/remm)
2025年09月08日 Tomcat 10.1.45 (schultz)
Catalina
- Code: Remove a number of unnecessary packages from the catalina-deployer.jar. (markt)
- Fix:
69781: Fix concurrent access issues in the session
FileStoreimplementation that were causing lost sessions when the store was used with thePersistentValve. Based on pull request #882 by Aaron Ogburn. (markt) - Fix:
Fix handling of
QSAandQSDflags inRewriteValve. (markt)
Coyote
- Fix:
Ensure keys are handed out to OpenSSL even if
PEMFilefails to process it, with appropriate logging. (remm) - Fix:
Add new
ML-DSAkey algorithm toPEMFileand improve reporting when reading a key fails. (remm) - Fix: Fix possible early timeouts for network operations caused by a spurious wake-up of a waiting thread. Found by Coverity Scan. (markt)
Cluster
- Fix:
Handle spurious wake-ups during leader election for
NonBlockingCoordinator. (markt) - Fix:
Handle spurious wake-ups during sending of messages by
RpcChannel. (markt)
Other
- Code: Review logging and include the full stack trace and exception message by default rather then just the exception message when logging an error or warning in response to an exception. (markt)
- Add: Add escaping to log formatters to align with JSON formatter. (markt)
- Update: Update Checkstyle to 11.0.0. (markt)
2025年08月07日 Tomcat 10.1.44 (schultz)
Catalina
- Fix: Fix bloom filter population for archive indexing when using a packed WAR containing one or more JAR files. (markt)
Coyote
- Fix: 69748: Add missing call to set keep-alive timeout when using HTTP/1.1 following an async request, which was present for AJP. (remm/markt)
- Fix:
69762: Fix possible overflow during HPACK decoding of
integers. Note that the maximum permitted value of an HPACK decoded
integer is
Integer.MAX_VALUE. (markt) - Fix:
Update the HTTP/2 overhead documentation - particularly the code
comments - to reflect the deprecation of the
PRIORITYframe and clarify that a stream reset always triggers an overhead increase. (markt) - Fix: 69762: Additional overflow fix for HPACK decoding of integers. Pull request #880 by Chenjp. (markt)
Cluster
- Update:
Add
enableStatisticsconfiguration attribute for theDeltaManager, defaulting totrue. (remm)
WebSocket
- Fix: Align the WebSocket extension handling for WebSocket client connections with WebSocket server connections. The WebSocket client now only includes an extension requested by an endpoint in the opening handshake if the WebSocket client supports that extension. (markt)
Web applications
Other
- Update: Update Checkstyle to 10.26.1. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2025年07月04日 Tomcat 10.1.43 (schultz)
Catalina
- Fix: Ensure application configured welcome files override the defaults when configuring an embedded web application programmatically. (markt)
- Fix:
Allow the default servlet to set the content length when the content
length is known, no content has been written and a
Writeris being used. (markt) - Fix: 69717: Correct a regression in the fix for CVE-2025-49125 that prevented access to PreResources and PostResources when mounted below the web application root with a path that was terminated with a file separator. (remm/markt)
- Fix:
69731: Fix an issue that meant that the value of
maxParameterCountapplied was smaller than intended for multipart uploads with non-file parts when the parts were processed before query string parameters. (markt) - Fix:
Align size tracking for multipart requests with FileUpload's use of
long. (schultz)
Coyote
- Fix:
69710: Increase the default for
maxPartCountfrom10to50. Update the documentation to provide more details on the memory requirements to support multi-part uploads while avoiding a denial of service risk. (markt) - Fix: 69713: Correctly handle an HTTP/2 data frame that includes padding when the headers include a content-length. (remm/markt)
- Fix: Correctly collect statistics for HTTP/2 requests and avoid counting one request multiple times. Based on pull request #868 by qingdaoheze. (markt)
- Fix:
Fix JMX value for
keepAliveCounton the endpoint. Also add the value ofuseVirtualThreadsin JMX. (remm) - Fix: 69728: Remove incorrect warning when HTTP/2 is used with optional certificate verification and improve the warnings when a web application tries to use CLIENT-CERT with either HTTP/2 or a JSSE implementation of TLS 1.3. (markt)
- Fix: When setting the initial HTTP/2 connection limit, apply those limits earlier. (markt)
Jasper
- Code:
Remove
IMPL_OBJ_STARTfrom EL grammar forIDENTIFIER. (markt) - Code:
Remove the
INSTANCEOFandFUNCTIONSUFFIXdefinitions from the EL grammar as both are unused. (markt)
Web applications
- Add: Documentation. Provide more explicit guidance regarding the security considerations for enabling write access to the web application via WebDAV, HTTP PUT requests or similar. (markt)
- Add: Documentation. Add a section on reverse proxies to the security considerations page. (markt)
Other
- Update: Update UnboundID to 7.0.3. (markt)
- Update: Update Checkstyle to 10.25.1. (markt)
- Update: Improvements to French translations. (remm)
- Update: Improvements to Japanese translations provided by tak7iji. (markt)
2025年06月09日 Tomcat 10.1.42 (schultz)
Catalina
- Fix:
Add support for the
java:modulenamespace which mirrors thejava:compnamespace. (markt) - Fix:
Support parsing of multiple path parameters separated by
;in a single URL segment. Based on pull request #860 by Chenjp. (markt) - Add:
Added support for limiting the number of parameters in HTTP requests through
the new
ParameterLimitValve. The valve allows configurable URL-specific limits on the number of parameters. (dsoumis) - Fix: 69699: Encode redirect URL used by the rewrite valve with the session id if appropriate, and handle cross context with different session configuration when using rewrite. (remm)
- Add: #863: Add support for comments at the end of lines in text rewrite map files to align behaviour with Apache httpd. Pull request provided by Chenjp. (markt)
- Fix: 69706: Fix saved request serialization issue in FORM introduced when allowing infinite session timeouts. (remm)
- Fix: Expand the path checks for Pre-Resources and Post-Resources mounted at a path within the web application. (markt)
Coyote
- Code:
#861: Refactor
TaskQueueto use the new interfaceRetryableQueuewhich enables better integration of customExecutors which provide their ownBlockingQueueimplementation. Pull request provided by Paulo Almeida. (markt) - Add:
Provide finer grained control of multi-part request processing via two
new attributes on the
Connectorelement.maxPartCountlimits the total number of parts in a multi-part request andmaxPartHeaderSizelimits the size of the headers provided with each part. Add support for these new attributes to theParameterLimitValve. (markt)
Jasper
- Fix: 69696: Mark the JSP wrapper for reload after a failed compilation. (remm)
Web applications
- Fix: 69694: Improve error reporting of deployment tasks done using the manager webapp when a copy operation fails. (remm)
Other
- Fix: Add thread name to webappClassLoader.stackTraceRequestThread message. Patch provided by Felix Zhang. (schultz)
- Update: Update Tomcat Native to 2.0.9. (markt)
- Update: Update the internal fork of Apache Commons FileUpload to 1.6.0 (2025年06月05日). (markt)
- Update: Update EasyMock to 5.6.0. (markt)
- Update: Update Checkstyle to 10.25.0. (markt)
- Fix:
Use the full path when the installer for Windows sets calls
icacls.exeto set file permissions. (markt) - Update: Improvements to Japanese translations provided by tak7iji. (markt)
2025年05月12日 Tomcat 10.1.41 (schultz)
Catalina
- Fix:
Fix use of
SSSinSimpleDateFormatpattern forAccessLogValve. (rjung) - Fix: Process possible path parameters rewrite production in the rewrite valve. (remm)
- Add:
69588: Enable
allowLinkingto be set onPreResources,JarResourcesandPostResources. If not set explicitly, the setting will be inherited from theResources. (markt) - Fix: 69633: Add support for Filters using context root mappings. (markt)
- Fix: 69643: Optimize directory listing for large amount of files. Patch submitted by Loic de l'Eprevier. (remm)
- Fix: #843: Fix off by one validation logic for partial PUT ranges and associated test case. Submitted by Chenjp. (remm)
- Code:
Replace the unused buffer in
org.apache.catalina.connector.InputBufferwith a static, zero length buffer. (markt) - Code:
Refactor GCI servlet to access resources via the
WebResourceAPI. (markt) - Fix: 69662: Report name in exception message when a naming lookup failure occurs. Based on code submitted by Donald Smith. (remm)
- Fix:
Ensure that the FORM authentication attribute
authenticationSessionTimeoutworks correctly when sessions have an infinite timeout when authentication starts. (markt) - Add: Provide a content type based on file extension when web application resources are accessed via a URL. (markt)
Coyote
- Code:
Refactor the
SavedRequestInputFilterso the buffered data is used directly rather than copied. (markt)
Jasper
- Fix:
69635: Add support to
jakarta.el.ImportHandlerfor resolving inner classes. (markt) - Add: #842Add support for optimized execution of c:set and c:remove tags, when activated via JSP servlet param useNonstandardTagOptimizations. (jengebr)
- Fix: Fix an edge case compilation bug for JSP and tag files on case insensitive file systems that was exposed by the test case for 69635. (markt)
Web applications
- Fix: 68876: Documentation. Update the UML diagrams for server start-up, request processing and authentication using PlantUML and include the source files for each diagram. (markt)
Other
- Fix:
Set
sun.io.useCanonCachesinservice.batBased on pull request #841 by Paul Lodge. (remm) - Update: Update Jacoco to 0.8.13. (remm)
- Add: Explicitly set the locale to be used for Javadoc. For official releases, this locale will be English (US) to support reproducible builds. (schultz)
- Update: Update Byte Buddy to 1.17.5. (markt)
- Update: Update Checkstyle to 10.23.1. (markt)
- Update: Update file extension to media type mappings to align with the current list used by the Apache Web Server (httpd). (markt)
- Update: Improvements to French translations. (remm)
- Update: Improvements to Japanese translations provided by tak7iji. (markt)
2025年04月08日 Tomcat 10.1.40 (schultz)
Catalina
- Fix: Return 400 if the amount of content sent for a partial PUT is inconsistent with the range that was specified. (remm)
- Add:
Add a new
RateLimiterimplementation,org.apache.catalina.util.ExactRateLimiter, that can be used withorg.apache.catalina.filters.RateLimitFilterto provide rate limit based on the exact values configured. Based on pull request #794 by Chenjp. (markt) - Fix:
Fix parsing of the
time-takentoken in theExtendedAccessLogValve. (remm) - Fix: Fix invocation of the FFM OpenSSL code for setting a SSL engine and FIPS mode. (remm)
- Fix: 69600: Add IPv6 local addresses (RFC 4193 and RFC 4291) to the default internal proxies for the RemoteIpFilter and RemoteIpValve. (markt)
- Fix: 69615: Improve integration with the not found class resources cache for users who are using a custom web application class loader and/or using reflection to dynamically add external repositories to the web application class loader. (markt)
- Add:
Add a new initialisation parameter to the Default servlet -
allowPostAsGet- which controls whether a direct request (i.e. not a forward or an include) for a static resource using the POST method will be processed as if the GET method had been used. If not allowed, the request will be rejected. The default behaviour of processing the request as if the GET method had been used is unchanged. (markt) - Fix:
69623: Correct a long standing regression that meant that
calls to
ClassLoader.getResource().getContent()failed when made from within a web application with resource caching enabled. (markt) - Fix:
69634: Avoid NPE on
JsonErrorReportValve. (remm) - Fix:
Add missing
throwablestack trace toJsonErrorReportValveequivalent to the one fromErrorReportValve. (remm) - Fix:
Improve the handling of
%nnURL encoding in the RewriteValve and document how%nnURL encoding may be used with rewrite rules. (markt) - Fix:
Fix a potential exception when calling
WebappClassLoaderBase.getResource(""). (markt)
Coyote
- Fix: 69607: Allow failed initialization of MD5. Based on code submitted by Shivam Verma. (remm)
- Fix: 69614: HTTP/2 priority frames with an invalid priority field value should be ignored. (markt)
- Fix: Improve handling of unexpected errors during HTTP/2 processing. (markt)
- Fix:
Add missing code to process an OpenSSL profile, such as
PROFILE=SYSTEM, using FFM. (remm) - Add: Simplify the process of using a custom SSLContext for an HTTPS enabled connector. Based on pull request #805 by Hakky54. (markt)
Jasper
- Code:
Replace custom URL encoding provided by the JSP runtime library with
calls to
java.net.URLEncoder.encode(). (markt) - Add:
Add compiler using the
Java CompilerAPI, supporting exploded web applications. ThecompilerClassNameto use isorg.apache.jasper.compiler.JavaCompiler. (remm) - Add:
Add support for specifying Java 25 (with the value
25) as the compiler source and/or compiler target for JSP compilation. If used with an Eclipse JDT compiler version that does not support these values, a warning will be logged and the default will be used. (markt)
Cluster
- Fix:
Fix resetting cross context sessions in the
ReplicationValve. (remm)
Web applications
- Add: Documentation. Add a link to the Log4j documentation that describes how to use Log4j rather than JULI for Tomcat's internal logging. (markt)
- Add: Documentation. Document the runtime attributes available to web applications via the Request or the ServletContext. Based on pull request #832 by usmazat. (markt)
Other
- Update: Revert JSign to 6.0 to avoid a file locking issue. (markt)
- Update: Update to NSIS 3.11. (markt)
- Update: Update to ByteBuddy 1.17.4. (markt)
- Update: Update to Checkstyle 10.21.4. (markt)
- Update: Update to SpotBugs to 4.9.3. (markt)
- Update: Improvements to French translations. (remm)
- Update: Improvements to Japanese translations provided by tak7iji. (markt)
2025年03月07日 Tomcat 10.1.39 (schultz)
not released Tomcat 10.1.38 (schultz)
Catalina
- Fix:
69602: Fix regression in releases from 12-2024 that were too
strict and rejected weak etags in the
If-Rangeheader with a 400 response. Instead will consider it as a failed match since strong etags are required forIf-Range. (remm)
not released Tomcat 10.1.37 (schultz)
Catalina
- Fix: When looking up class loader resources by resource name, the resource name should not start with '/'. If the resource name does start with '/', Tomcat is lenient and looks it up as if the '/' was not present. When the web application class loader was configured with external repositories and names starting with '/' were used for lookups, it was possible that cached 'not found' results could effectively hide lookup results using the correct resource name. (markt)
- Fix:
Enable the JNDIRealm to validate credentials provided to
HttpServletRequest.login(String username, String password)when the realm is configured to use GSSAPI authentication. (markt) - Fix: Fix a bug in the JRE compatibility detection that incorrectly identified Java 19 and Java 20 as supporting Java 21 features. (markt)
- Fix: Improve the checks for exposure to and protection against CVE-2024-56337 so that reflection is not used unless required. The checks for whether the file system is case sensitive or not have been removed. (markt)
- Add:
Add support for logging the connection ID (as returned by
ServletRequest.getServletConnection().getConnectionId()) with theAccessLogValveandExtendedAccessLogValve. Based on pull request #814 by Dmole. (markt) - Fix: Avoid scenarios where temporary files used for partial PUT would not be deleted. (remm)
Coyote
- Fix:
69575: Avoid using compression if a response is already
compressed using
compress,deflateorzstd. (remm) - Update:
Use
Transfer-Encodingfor compression rather thanContent-Encodingif the client submits aTEheader containinggzip. (remm) - Fix: Fix a race condition in the handling of HTTP/2 stream reset that could cause unexpected 500 responses. (markt)
Cluster
- Add:
69598: Add detection of service account token changes to the
KubernetesMembershipProviderimplementation and reload the token if it changes. Based on a patch by Miroslav Jezbera. (markt)
Other
- Add:
Add
makensisas an option for building the Installer for Windows on non-Windows platforms. (rjung/markt) - Update: Update Byte Buddy to 1.17.1. (markt)
- Update: Update Checkstyle to 10.21.3. (markt)
- Update: Update SpotBugs to 4.9.1. (markt)
- Update: Update JSign to 7.1. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2025年02月18日 Tomcat 10.1.36 (schultz)
Catalina
- Fix:
69576: Avoid possible failure initializing
JreCompatdue to uncaught exception introduced for the check for CVE-2024-56337. (remm)
Other
- Add:
Add
org.apache.juli.JsonFormatterto format log as one line JSON documents. (remm)
2025年02月10日 Tomcat 10.1.35 (schultz)
Catalina
- Update:
Add
tableNameconfiguration on theDataSourcePropertyStorethat may be used by the WebDAV Servlet. (remm) - Update: Improve HTTP If headers processing according to RFC 9110. Based on pull request #796 by Chenjp. (remm/markt)
- Update:
Allow
readOnlyattribute configuration on theResourceselement and allow configure thereadOnlyattribute value of the main resources. The attribute value will also be used by the default and WebDAV Servlets. (remm) - Fix: 69285: Optimise the creation of the parameter map for included requests. Based on sample code and test cases provided by John Engebretson. (markt)
- Fix: 69527: Avoid rare cases where a cached resource could be set with 0 content length, or could be evicted immediately. (remm)
- Fix: Fix possible edge cases (such as HTTP/1.0) with trying to detect requests without body for WebDAV LOCK and PROPFIND. (remm)
- Fix:
69528: Add multi-release JAR support for the
bloomarchiveIndexStrategyof theResources. (remm) - Fix:
Improve checks for
WEB-INFandMETA-INFin the WebDAV servlet. Based on a patch submitted by Chenjp. (remm) - Fix:
Remove unused session to client map from
CrawlerSessionManagerValve. Submitted by Brian Matzon. (remm) - Add: Add a check to ensure that, if one or more web applications are potentially vulnerable to CVE-2024-56337, the JVM has been configured to protect against the vulnerability and to configure the JVM correctly if not. Where one or more web applications are potentially vulnerable to CVE-2004-56337 and the JVM cannot be correctly configured or it cannot be confirmed that the JVM has been correctly configured, prevent the impacted web applications from starting. (markt)
- Fix:
When using the WebDAV servlet with
serveSubpathOnlyset totrue, ensure that the destination for any requested WebDAV operation is also restricted to the sub-path. (markt) - Fix:
Generate an appropriate
AllowHTTP header when the Default servlet returns a 405 (method not allowed) response in response to aDELETErequest because the target resource cannot be deleted. Pull request #802 provided by Chenjp. (markt) - Code:
Refactor creation of
RequestDispatcherinstances so that the processing of the provided path is consistent with normal request processing. (markt) - Add:
Add
encodedReverseSolidusHandlingandencodedSolidusHandlingattributes to Context to provide control over the handling of the path used to created aRequestDispatcher. (markt) - Fix:
Handle a potential
NullPointerExceptionafter anIOExceptionoccurs on a non-container thread during asynchronous processing. (markt) - Fix: Enhance lifecycle of temporary files used by partial PUT. (remm)
Coyote
- Fix: Don't log warnings for registered HTTP/2 settings that Tomcat does not support. These settings are now silently ignored. (markt)
- Fix:
Avoid a rare
NullPointerExceptionwhen recycling theHttp11InputBuffer. (markt) - Fix: Lower the log level to debug for logging an invalid socket channel when processing poller events for the NIO Connector as this may occur in normal usage. (markt)
- Code: Clean-up references to the HTTP/2 stream once request processing has completed to aid GC and reduce the size of the HTTP/2 recycled request and response cache. (markt)
- Add:
Add a new Connector configuration attribute,
encodedReverseSolidusHandling, to control how%5csequences in URLs are handled. The default behaviour is unchanged (decode) keeping in mind that the allowBackslash attribute determines how the decoded URI is processed. (markt) - Fix:
69545: Improve CRLF skipping for the
availablemethod of theChunkedInputFilter. (remm) - Fix:
Improve the performance of repeated calls to
getHeader(). Pull request #813 provided by Adwait Kumar Singh. (markt) - Fix:
69559: Ensure that the Java 24 warning regarding the use of
sun.misc.Unsafe::invokeCleaneris only reported by the JRE when the code will be used. (markt)
Jasper
- Fix: 69508: Correct a regression in the fix for 69382 that broke JSP include actions if both the page attribute and the body contained parameters. Pull request #803 provided by Chenjp. (markt)
- Fix:
Update the identifier validation in the Expression Language parser to
reflect that, as of Java 9,
_is also a Java keyword and may not be used as an identifier. (markt) - Fix: 69521: Update the EL Parser to allow the full range of valid characters in an EL identifier as defined by the Java Language Specification. (markt)
- Fix:
69532: Optimise the creation of
ExpressionFactoryinstances. Patch provided by John Engebretson. (markt)
Web applications
- Add:
Documentation. Expand the description of the security implications of
setting
mapperContextRootRedirectEnabledand/ormapperDirectoryRedirectEnabledtotrue. (markt) - Fix:
Documentation. Better document the default for the
truststoreProviderattribute of aSSLHostConfigelement. (markt)
Other
- Update: Update to Commons Daemon 1.4.1. (markt)
- Update: Update the packaged version of the Tomcat Migration Tool for Jakarta EE to 1.0.9. (markt)
- Update: Update the internal fork of Commons Pool to 2.12.1. (markt)
- Update: Update Byte Buddy to 1.16.1. (markt)
- Update: Update UnboundID to 7.0.2. (markt)
- Update: Update Checkstyle to 10.21.2. (markt)
- Update: Update SpotBugs to 4.9.0. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Chinese translations by leeyazhou. (markt)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2024年12月09日 Tomcat 10.1.34 (schultz)
Catalina
- Add: Add option to serve resources from subpath only with WebDAV Servlet like with DefaultServlet. (michaelo)
- Fix:
Add special handling for the
protocolsattribute ofSSLHostConfigin storeconfig. (remm) - Fix:
69442: Fix case sensitive check on
content-typewhen parsing request parameters. (remm) - Code:
Refactor duplicate code for extracting media type and subtype from
content-typeinto a single method. (markt) - Fix: Compatibility of generated embedded code with components where constructors or property related methods throw a checked exception. (remm)
- Fix: The previous fix for inconsistent resource metadata during concurrent reads and writes was incomplete. (markt)
- Fix:
#780: Fix
content-rangeheader length. Submitted by Chenjp. (remm) - Fix:
69444: Ensure that the
jakarta.servlet.error.messagerequest attribute is set when an application defined error page is called. (markt) - Fix: Avoid quotes for numeric values in the JSON generated by the status servlet. (remm)
- Add:
Add strong ETag support for the WebDAV and default servlet, which can
be enabled by using the
useStrongETagsinit parameter with a value set totrue. The ETag generated will be a SHA-1 checksum of the resource content. (remm) - Fix: Use client locale for directory listings. (remm)
- Fix:
69439: Improve the handling of multiple
Cache-Controlheaders in theExpiresFilter. Based on pull request #777 by Chenjp. (markt) - Fix: 69447: Update the support for caching classes the web application class loader cannot find to take account of classes loaded from external repositories. Prior to this fix, these classes could be incorrectly marked as not found. (markt)
- Fix: 69466: Rework handling of HEAD requests. Headers explicitly set by users will not be removed and any header present in a HEAD request will also be present in the equivalent GET request. There may be some headers, as per RFC 9110, section 9.3.2, that are present in a GET request that are not present in the equivalent HEAD request. (markt)
- Fix:
69471: Log instances of
CloseNowExceptioncaught byApplicationDispatcher.invoke()at debug level rather than error level as they are very likely to have been caused by a client disconnection or similar I/O issue. (markt) - Add:
Add a test case for the fix for 69442. Also refactor
references to
application/x-www-form-urlencoded. Based on pull request #779 by Chenjp. (markt) - Fix:
69476: Catch possible ISE when trying to report PUT failure
in the
DefaultServlet. (remm) - Add:
Add support for RateLimit
header fields for HTTP (draft) in the
RateLimitFilter. Based on pull request #775 provided by Chenjp. (markt) - Add: #787: Add regression tests for 69478. Pull request provided by Thomas Krisch. (markt)
- Fix: The default servlet now rejects HTTP range requests when two or more of the requested ranges overlap. Based on pull request #782 provided by Chenjp. (markt)
- Fix: Enhance Content-Range verification for partial PUT requests handled by the default servlet. Provided by Chenjp in pull request #778. (markt)
- Fix:
Harmonize
DataSourceStorelookup in the global resources to optionally avoid thecomp/envprefix which is usually not used there. (remm) - Fix:
As required by RFC 9110, the HTTP
Rangeheader will now only be processed forGETrequests. Based on pull request #790 provided by Chenjp. (markt) - Fix:
Deprecate the
useAcceptRangesinitialisation parameter for the default servlet. It will be removed in Tomcat 12 onwards where it will effectively be hard coded totrue. (markt) - Add:
Add
DataSourcebased property storage for theWebdavServlet. (remm)
Coyote
- Fix:
Align
encodedSolidusHandlingwith the Servlet specification. If the pass-through mode is used, any%25sequences will now also be passed through to avoid errors and/or corruption when the application decodes the path. (markt)
Jasper
- Fix: Follow-up to the fix for 69381. Apply the optimisation for method lookup performance in expression language to an additional location. (markt)
Web applications
- Fix:
Documentation. Remove references to the
ResourceParamselement. Support forResourceParamswas removed in Tomcat 5.5.x. (markt) - Fix:
Documentation. 69477: Correct name of attribute for
RemoteIPFilter. The attribute isinternalProxiesrather thanallowedInternalProxies. Pull request #786 provided by Jorge Díaz. (markt) - Fix: Examples. Fix broken links when Servlet Request Info example is called via a URL that includes a pathInfo component. (markt)
- Fix: Examples. Expand the obfuscation of session cookie values in the request header example to JSON responses. (markt)
- Add: Examples. Add the ability to delete session attributes in the servlet session example. (markt)
- Add: Examples. Add a hard coded limit of 10 attributes per session for the servlet session example. (markt)
- Add: Examples. Add the ability to delete session attributes and add a hard coded limit of 10 attributes per session for the JSP form authentication example. (markt)
- Add: Examples. Limit the shopping cart example to only allow adding the pre-defined items to the cart. (markt)
- Fix: Examples. Remove JSP calendar example. (markt)
Other
- Fix: 69465: Fix warnings during native image compilation using the Tomcat embedded JARs. (markt)
- Update: Update Tomcat's fork of Commons DBCP to 2.13.0. (markt)
- Update: Update EasyMock to 5.5.0. (markt)
- Update: Update Checkstyle to 10.20.2. (markt)
- Update: Update BND to 7.1.0. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Korean translations. (markt)
- Add: Improvements to Chinese translations. (markt)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2024年11月11日 Tomcat 10.1.33 (schultz)
Other
- Fix: Fix release build issue.
not released Tomcat 10.1.32 (schultz)
Catalina
- Add:
Add support for the new Servlet API method
HttpServletResponse.sendEarlyHints(). (markt) - Add:
55470 : Add debug logging that reports the class path when aClassNotFoundExceptionoccurs in the digester or the web application class loader. Based on a patch by Ralf Hauser. (markt) - Update:
69374: Properly separate between table header and body
in
DefaultServlet's listing. (michaelo) - Update:
69373: Make
DefaultServlet's HTML listing file last modified rendering better (flexible). (michaelo) - Update:
Improve HTML output of
DefaultServlet. (michaelo) - Code:
Refactor
RateLimitFilterto useFilterBaseas the base class. The primary advantage for doing this is less code to processinit-paramvalues. (markt) - Update:
69370:
DefaultServlet's HTML listing uses incorrect labels. (michaelo) - Fix:
Avoid NPE in
CrawlerSessionManagerValvefor partially mapped requests. (remm) - Fix:
Add missing WebDAV
Lock-Tokenheader in the response when locking a folder. (remm) - Fix: Invalid WebDAV lock requests should be rejected with 400. (remm)
- Fix: Fix regression in WebDAV when attempting to unlock a collection. (remm)
- Fix: Verify that destination is not locked for a WebDAV copy operation. (remm)
- Fix:
Send 415 response to WebDAV
MKCOLoperations that include a request body since this is optional and unsupported. (remm) - Fix:
Enforce
DAV:namespace on WebDAV XML elements. (remm) - Fix: Do not allow a new WebDAV lock on a child resource if a parent collection is locked (RFC 4918 section 6.1). (remm)
- Fix:
WebDAV
DELETEshould remove any existing lock on successfully deleted resources. (remm) - Update: Remove WebDAV lock null support in accordance with RFC 4918 section 7.3 and annex D. Instead a lock on a non existing resource will create an empty file locked with a regular lock. (remm)
- Update: Rewrite implementation of WebDAV shared locks to comply with RFC 4918. (remm)
- Update:
Implement WebDAV
Ifheader using code from the Apache Jackrabbit project. (remm) - Add:
Add
PropertyStoreinterface in the WebDAV Servlet, to allow implementation of dead properties storage. The store used can be configured using thepropertyStoreinit parameter of the WebDAV servlet by specifying the class name of the store. A simple non persistent implementation is used if no custom store is configured. (remm) - Update:
Implement WebDAV
PROPPATCHmethod using the newly addedPropertyStore, and updatePROPFINDto support it. (remm) - Fix:
Cache not found results when searching for web application class loader
resources. This addresses performance problems caused by components such
as
java.sql.DriverManagerwhich, in some circumstances, will search for the same class repeatedly. In a large web application this can cause performance problems. The size of the cache can be controlled via the newnotFoundClassResourceCacheSizeon the StandardContext. (markt) - Fix:
Stop after
INITIALIZEDstate should be a noop since it is possible for subcomponents to be inFAILEDafter init. (remm) - Fix:
Fix incorrect web resource cache size calculations when there are
concurrent
PUTandDELETErequests for the same resource. (markt) - Add: Add debug logging for the web resource cache so the current size can be tracked as resources are added and removed. (markt)
- Update:
Replace legacy WebDAV
opaquelocktoken:scheme for lock tokens withurn:uuid:as recommended by RFC 4918, and removesecretinit parameter. (remm) - Fix:
Concurrent reads and writes (e.g.
GETandPUT/DELETE) for the same path caused corruption of theFileResourcewhere some of the fields were set as if the file exists and some were set as if it does not. This resulted in inconsistent metadata. (markt) - Fix:
69415: Ensure that the
ExpiresFilteronly sets cache headers onGETandHEADrequests. Also skip requests where the application has setCache-Control: no-store. (markt) - Fix:
69419: Improve the performance of
ServletRequest.getAttribute()when there are multiple levels of nested includes. Based on a patch provided by John Engebretson. (markt) - Add:
All applications to send an early hints informational response by
calling
HttpServletResponse.sendError()with a status code of 103. (schultz)
Coyote
- Fix: Return null SSL session id on zero length byte array returned from the SSL implementation. (remm)
- Fix: Skip OpenSSLConf with BoringSSL since it is unsupported. (remm)
- Fix:
Create the
HttpParserinHttp11Processorif it is not present on theAbstractHttp11Protocolto provide better lifecycle robustness for regular HTTP/1.1. The new behavior was introduced on a previous refactoring to improve HTTP/2 performance. (remm) - Fix:
OpenSSLContextwill now throw aKeyManagementExceptionif something is known to have gone wrong in theinitmethod, which is the behavior documented byjavax.net.ssl.SSLContext.init. This makes error handling more consistent. (remm) - Fix: 69379: The default HEAD response no longer includes the payload HTTP header fields as per section 9.3.2 of RFC 9110. (markt)
Jasper
- Fix: Add back tag release method as deprecated in the runtime for compat with old generated code. (remm)
- Fix:
69399: Fix regression caused by the improvement
69333 which caused the tag
releaseto be called when using tag pooling, and to be skipped when not using it. Patch submitted by Michal Sobkiewicz. (remm) - Fix: 69381: Improve method lookup performance in expression language. When the required method has no arguments there is no need to consider casting or coercion and the method lookup process can be simplified. Based on pull request #770 by John Engebretson. (markt)
- Fix: 69382: Improve the performance of the JSP include action by re-using results of relatively expensive method calls in the generated code rather than repeating them. Patch provided by John Engebretson. (markt)
- Fix:
69398: Avoid unnecessary object allocation in
PageContextImpl. Based on a suggestion by John Engebretson. (markt) - Fix:
69406: When using
StringInterpreterEnum, do not throw anIllegalArgumentExceptionwhen an invalidEnumis encountered. Instead, resolve the value at runtime. Patch provided by John Engebretson. (markt) - Fix: 69429: Optimise EL evaluation of method parameters for methods that do not accept any parameters. Patch provided by John Engebretson. (markt)
- Fix: Further optimise EL evaluation of method parameters. Patch provided by Paolo B. (markt)
Other
- Update: Switch from DigiCert ONE to ssl.com eSigner for code signing. (markt)
- Update: Update Byte Buddy to 1.15.10. (markt)
- Update: Update CheckStyle to 10.20.0. (markt)
- Add: Improvements to German translations. (remm)
2024年10月09日 Tomcat 10.1.31 (schultz)
Catalina
- Fix:
Ensure that
ServerAuthModule.initialize()is called when a Jakarta Authentication module is configured viaregisterServerAuthModule(). (markt) - Fix:
Ensure that the Jakarta Authentication
CallbackHandleronly creates oneGenericPrincipalin theSubject. (markt) - Fix:
If the Jakarta Authentication process fails with an Exception,
explicitly set the HTTP response status to 500 as the
ServerAuthContextmay not have set it. (markt) - Fix: When persisting the Jakarta Authentication provider configuration, create any necessary parent directories that don't already exist. (markt)
- Fix: Correct the logic used to detect errors when deleting temporary files associated with persisting the Jakarta Authentication provider configuration. (markt)
- Fix:
When processing Jakarta Authentication callbacks, don't overwrite a
Principal obtained from the
PasswordValidationCallbackwithnullif theCallerPrincipalCallbackdoes not provide a Principal. (markt) - Fix: Avoid store config backup loss when storing one configuration more than once per second. (remm)
- Fix:
69359:
WebdavServletduplicatesgetRelativePath()method from super class with incorrect Javadoc. (michaelo) - Fix:
69360: Inconsistent
DELETEbehavior betweenWebdavServletandDefaultServlet. (michaelo) - Fix:
Make
WebdavServletproperly return theAllowheader when deletion of a resource is not allowed. (michaelo) - Fix:
Add log warning if non wildcard mappings are used with the
WebdavServlet. (remm) - Fix: 69361: Ensure that the order of entires in a multi-status response to a WebDAV is consistent with the order in which resources were processed. (markt)
- Fix: 69362: Provide a better multi-status response when deleting a collection via WebDAV fails. Empty directories that cannot be deleted will now be included in the response. (markt)
- Fix:
69363: Use
getPathPrefix()consistently in the WebDAV servlet to ensure that the correct path is used when the WebDAV servlet is mounted at a sub-path within the web application. (markt)
Coyote
- Fix:
69316: Ensure that
FastHttpDateFormat#getCurrentDate()(used to generate Date headers for HTTP responses) generates the correct string for the given input. Prior to this change, the output may have wrong by one second in some cases. Pull request #751 provided by Chenjp. (markt) - Fix: Request start time may not have been accurately recorded for HTTP/1.1 requests preceded by a large number of blank lines. (markt)
- Add:
Add
serverandserverRemoveAppProvidedValuesto the list of attributes the HTTP/2 protocol will inherit from the HTTP/1.1 connector it is nested within. (markt) - Fix: Avoid possible crashes when using Apache Tomcat Native, caused by destroying SSLContext objects through GC after APR has been terminated. (remm)
- Fix: Improve HTTP/2 handling of trailer fields for requests. Trailer fields no longer need to be recieved before the headers of the subsequent stream nor are trailer fields for an in progress stream swallowed if the Connector is paused before the trailer fields are received. (markt)
- Fix: Ensure the request and response are not recycled too soon for an HTTP/2 stream when a stream level error is detected during the processing of incoming HTTP/2 frames. This could lead to incorrect processing times appearing in the access log. (markt)
Jasper
- Fix: 69333: Remove unnecessary code from generated JSPs. (markt)
- Fix:
69338: Improve the performance of processing expressions that
include AND or OR operations with more than two operands and expressions
that use
not empty. (markt) - Fix:
69348: Reduce memory consumption in
ELContextby using lazy initialization for the data structure used to track lambda arguments. (markt)
Web applications
- Fix: The manager webapp will now be able to access certificates again when OpenSSL is used. (remm)
Other
- Update: Update Byte Buddy to 1.15.3. (markt)
- Update: Update CheckStyle to 10.18.2. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
- Add: Improvements to Chinese translations by Ch_jp. (markt)
2024年09月17日 Tomcat 10.1.30 (schultz)
2024年09月10日 Tomcat 10.1.29 (schultz)
Catalina
- Fix:
Improve performance of
ApplicationHttpRequest.parseParameters(). Based on sample code and test cases provided by John Engebretson. (markt)
Coyote
- Fix:
Correct a regression in the fix for non-blocking reads of chunked
request bodies that caused
InputStream.available()to return a non-zero value when there was no data to read. In some circumstances this could cause a blocking read to block waiting for more data rather than return the data it had already received. (markt) - Add:
Add a new attribute
cookiesWithoutEqualsto theRfc6265CookieProcessor. The default behaviour is unchanged. (markt) - Fix:
Ensure that Tomcat sends a TLS close_notify message after receiving one
from the client when using the
OpenSSLImplementation. (markt) - Fix: 69301: Fix trailer headers replacing non-trailer headers when writing response headers to the access log. Based on a patch and test case provided by hypnoce. (markt)
- Fix:
69302: If an HTTP/2 client resets a stream before the request
body is fully written, ensure that any
ReadListeneris notified via a call toReadListener.onErrror(). (markt)
Jasper
- Fix:
Switch the
TldScannerback to logging detailed scan results at debug level rather than trace level. (markt)
WebSocket
- Fix: If a blocking message write exceeds the timeout, don't attempt the write again before throwing the exception. (markt)
- Fix: An EncodeException being thrown during a message write should not automatically cause the connection to close. The application should handle the exception and make the decision whether or not to close the connection. (markt)
Web applications
- Fix: Documentation. Align the logging configuration documentation with the current defaults. (markt)
jdbc-pool
- Fix:
69255: Correct a regression in the fix for 69206
that meant exceptions executing statements were wrapped in an
java.lang.reflect.UndeclaredThrowableExceptionrather than the application seeing the originalSQLException. Fixed by pull request #744 provided by Michael Clarke. (markt) - Fix:
69279: Correct a regression in the fix for 69206
that meant that methods that previously returned a
nullResultSetwere returning a proxy with a null delegate. Fixed by pull request #745 provided by Huub de Beer. (markt)
Other
- Add:
Exclude the
tomcat-coyote-ffm.jarfrom JAR scanning by default. (markt) - Fix:
Change the default log handler level to
ALLso log messages are not dropped by default if a logger is configured to use trace (FINEST) level logging. (markt) - Update: Update Hamcrest to 3.0. (markt)
- Update: Update EasyMock to 5.4.0. (markt)
- Update: Update Byte Buddy to 1.15.0. (markt)
- Update: Update CheckStyle to 10.18.0. (markt)
- Update: Update the internal fork of Apache Commons BCEL to 6.10.0. (markt)
- Add: Improvements to Spanish translations by Fernando. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2024年08月06日 Tomcat 10.1.28 (schultz)
Coyote
- Fix: Correct regressions in the refactoring that added recycling of the coyote request and response to the HTTP/2 processing. (markt)
not released Tomcat 10.1.27 (schultz)
Catalina
- Add:
Add support for RFC 8297 (Early Hints). Applications can use this
feature by casting the
HttpServletResponsetoorg.apache.catalina.connector.Reponseand then calling the methodvoid sendEarlyHints(). This method will be added to the Servlet API (removing the need for the cast) in Servlet 6.2 onwards. (markt) - Fix:
69214: Do not reject a CORS request that uses POST but does
not include a
content-typeheader. Tomcat now correctly processes this as a simple CORS request. Based on a patch suggested by thebluemountain. (markt) - Fix:
Refactor
SpnegoAuthenticatorso it usesSubject.callAs()rather thanSubject.doAs()when the available. (markt)
Coyote
- Fix: Ensure that HTTP/2 stream input buffers are only created when there is a request body to be read. (markt)
- Code: Refactor creation of HttpParser instances from the Processor level to the Protocol level since the parser configuration depends on the protocol and the parser is, otherwise, stateless. (markt)
- Add:
Align HTTP/2 with HTTP/1.1 and recycle the container internal request
and response processing objects by default. This behaviour can be
controlled via the new
discardRequestsAndResponsesattribute on the HTTP/2 upgrade protocol. (markt)
jdbc-pool
Other
- Fix:
Fix packaging regression with missing osgi information following
addition of the
test-onlybuild target. (remm) - Update: Update Tomcat Native to 2.0.8. (markt)
- Update: Update Byte Buddy to 1.14.18. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2024年07月12日 Tomcat 10.1.26 (schultz)
Catalina
- Fix:
Allow
JAASRealmto use the configuration source to load a configuredconfigFile, for easier use with testing. (remm) - Fix:
Add missing algorithm callback to the
JAASCallbackHandler. (remm) - Fix: Add the OpenSSL version number on the APR and OpenSSL status classes. (remm)
- Fix:
69131: Expand the implementation of the
filtervalue of the Authenticator attributeallowCorsPreflight, so that it applies to all requests that match the configured URL patterns for the CORS filter, rather than only applying if the CORS filter is mapped to/*. (markt) - Fix:
Using the
OpenSSLListenerwill now cause the connector to use OpenSSL if available. (remm)
Coyote
- Fix: Clean and log OpenSSL errors before processing of OpenSSL conf commands in the FFM code. (remm)
- Fix:
69121: Ensure that the
onComplete()event is triggered ifAsyncListener.onError()dispatches to a target that throws an exception. (markt) - Fix:
Following the trailer header field refactoring,
-1is no longer an allowed value formaxTrailerSize. Adjust documentation accordingly. (remm) - Update:
Move OpenSSL support using FFM to a separate JAR named
tomcat-coyote-ffm.jarthat advertises Java 22 in its manifest. (remm) - Fix:
Fix search for OpenSSL library for FFM on Mac OS so that
java.library.pathis searched. (markt) - Update: Add FFM compatibility methods for LibreSSL support. Renegotiation is not supported at the moment. (remm)
- Update:
Add
org.apache.tomcat.util.openssl.LIBRARY_NAME(specifies the name of the library to load) andorg.apache.tomcat.util.openssl.USE_SYSTEM_LOAD_LIBRARY(set totrueto useSystem.loadLibraryrather than the FFM library loading code) to configure the OpenSSL library loading using FFM. (remm) - Update: Add FFM compatibility methods for BoringSSL support. Renegotiation is not supported in many cases. (remm)
Jasper
- Fix:
Update the optimisation in
jakarta.el.ImportHandlerso it is aware of new classes added to thejava.langpackage in Java 23. (markt) - Fix:
Ensure that an exception in
toString()still results in anELExceptionwhen an object is coerced to a String usingExpressionFactory.coerceToType(). (markt) - Add:
Add support for specifying Java 24 (with the value
24) as the compiler source and/or compiler target for JSP compilation. If used with an Eclipse JDT compiler version that does not support these values, a warning will be logged and the default will used. (markt) - Fix: 69135: When using include directives in a tag file packaged in a JAR file, ensure that context relative includes are processed correctly. (markt)
- Fix: 69135: When using include directives in a tag file packaged in a JAR file, ensure that file relative includes are processed correctly. (markt)
- Fix:
69135: When using include directives in a tag file packaged
in a JAR file, ensure that file relative includes are are not permitted
to access files outside of the
/META_INF/tags/directory nor outside of the JAR file. (markt)
Web applications
- Fix: Fix status servlet detailed view of the connectors when using automatic port. (remm)
Other
- Update:
Add
test-onlybuild target to allow running only the testsuite, supporting Java versions down to the minimum supported to run Tomcat. (rjung) - Update: Update UnboundID to 7.0.1. (markt)
- Update: Update to SpotBugs 4.8.6. (markt)
- Update: Remove cglib dependency as it is not required by the version of EasyMock used by the unit tests. (markt)
- Update: Update EasyMock to 5.3.0. This adds a test dependency on Byte-Buddy 1.14.17. (markt)
- Add: Improvements to Czech translations by Vladimír Chlup. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
- Add: Improvements to Chinese translations by fangzheng. (markt)
2024年06月19日 Tomcat 10.1.25 (schultz)
Catalina
- Add: Add support for shallow copies when using WebDAV. (markt)
- Code:
Deprecate the
WebdavFixFilteras it is no longer required. (markt) - Fix: 69066: Fix regression in SPNEGO authenticator when processing Base64. Submitted by Daniel Lyko. (remm)
- Add:
Add
RealmBase.getPrincipal(GSSName, GSSCredential, GSSContext)for retrieving extended/additional information from an established GSS context. (michaelo) - Fix:
Correct a regression in the fix for 68721 that caused some
instances of
LinkageErrorto be reported asClassNotFoundException. (markt) - Fix: Ensure that static resources deployed via a JAR file remain accessible when the context is configured to use a bloom filter. Based on pull request #730 provided by bergander. (markt)
- Add:
Introduce reference counting so the
AprLifecycleListeneris more robust. This particularly targets more complex embedded configurations with multiple server instances with independent lifecycles where more than one server instance requires theAprLifecycleListener. (markt)
Coyote
- Fix: Fix OpenSSL FFM use of ERR_error_string with a 128 byte buffer, and use ERR_error_string_n instead. (remm)
- Fix: Fix a crash on Windows setting CA certificate on null path. (remm)
- Fix: 69068: Ensure read timouts are triggered for asynchronous, non-blocking reads when using HTTP/2. (markt)
- Update:
69133: Add task queue size configuration on the
Connectorelement, similar to theExecutorelement, for consistency. (remm) - Fix: Make counting of active HTTP/2 streams per connection more robust. (markt)
- Add: Add support for TLS 1.3 client initiated re-keying. (markt)
- Fix: Improve the algorithm used to identify the IP address to use to unlock the acceptor thread when a Connector is listening on all local addresses. Interfaces that are configured for point to point connections or are not currently up are now skipped. (markt)
Jasper
- Fix: 68546: Small additional optimisation for initial loading of Servlet code generated for JSPs. Based on a suggestion by Dan Armstrong. (markt)
Web applications
- Add: Add the ability to set a sub-title for the Manager web application main page. This is intended to allow users with lots of instances to easily distinguish them. Based on pull request #724 by Simon Arame. (markt)
Other
- Update: Revert Derby to 10.16.1.1 as that is the latest version of Derby that runs on Java 17. (markt)
- Update: Update to Commons Daemon 1.4.0. (markt)
- Update: Update to Objenesis 3.4. (markt)
- Update: Update to Checkstyle 10.17.0. (markt)
- Update: Update to SpotBugs 4.8.5. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2024年05月13日 Tomcat 10.1.24 (schultz)
Catalina
- Add: Small performance optimization when logging cookies with no values. (schultz)
- Fix:
Correct error handling for asynchronous requests. If the application
performs an dispatch during
AsyncListener.onError()the dispatch is now performed rather than completing the request using the error page mechanism. (markt) - Add: Re-factor ElapsedTimeElement in AbstractAccessLogValve to use a customizable style. (schultz)
- Add: Add more timescale options to AccessLogValve and ExtendedAccessLogValve. Allow timescales to apply to "time-taken" token in ExtendedAccessLogValve. (schultz)
- Fix: Fix WebDAV lock null (locks for non existing resources) thread safety and removal. (remm)
- Fix: Add periodic checking for WebDAV locks expiration. (remm)
- Fix:
Extend
Asn1Parserto parseUTF8Strings. (michaelo) - Fix: Remove MBean metadata for attibutes that have been removed. Based on pull request #719 by Shawn Q. (markt)
Coyote
- Fix: Align non-secure and secure writes with NIO and skip the write attempt when there are no bytes to be written. (markt)
- Fix:
Allow any positive value for
socket.unlockTimeout. If a negative or zero value is configured, the default of250mswill be used. (mark) - Fix:
Reduce the time spent waiting for the connector to unlock. The previous
default of 10s was noticeably too long for cases where the unlock has
failed. The wait time is now 100ms plus twice
socket.unlockTimeout. (markt) - Fix:
Ensure that the
onAllDataRead()event is triggered when the request body uses chunked encoding and is read using non-blocking IO. (markt) - Fix:
68934: Add debug logging in the latch object when exceeding
maxConnections. (remm) - Fix:
Refactor trailer field handling to use a
MimeHeadersinstance to store trailer fields. (markt) - Fix: Ensure that multiple instances of the same trailer field are handled correctly. (markt)
- Fix: Fix non-blocking reads of chunked request bodies. (markt)
- Fix: When an invalid HTTP response header was dropped, an off-by-one error meant that the first header in the response was also dropped. Fix based on pull request #710 by foremans. (markt)
Jasper
- Add:
Add support for specifying Java 23 (with the value
23) as the compiler source and/or compiler target for JSP compilation. If used with an Eclipse JDT compiler version that does not support these values, a warning will be logged and the default will used. (markt)
WebSocket
- Fix: 69844: Close the connection with a protocol error if the server sends masked frames. (markt)
- Fix:
68884: Reduce the write timeout when writing WebSocket close
messages for abnormal closes. The timeout defaults to 50 milliseconds
and may be controlled using the
org.apache.tomcat.websocket.ABNORMAL_SESSION_CLOSE_SEND_TIMEOUTproperty in the user properties collection associated with the WebSocket session. (markt)
Web applications
- Fix: Examples: Improve performance of WebSocket chat application when multiple clients disconnect at the same time. (markt)
- Update: Examples: Increase the number of previous messages displayed when using the WebSocket chat application. (markt)
- Fix: Examples: Improve performance of WebSocket snake application when multiple clients disconnect at the same time. (markt)
Other
- Update: Switch to using the Base64 encoder and decoder provided by the JRE rather than the version provided by Commons Codec. The internal fork of Commons Codec has been deprecated and will be removed in Tomcat 11. (markt)
- Update: Update NSIS to 3.10. (mark0t)
- Update: Update UnboundID to 7.0.0. (markt)
- Update: Update Checkstyle to 10.16.0. (markt)
- Update: Update JaCoCo to 0.8.12. (markt)
- Update: Update SpotBugs to 4.8.4. (markt)
- Update: Update the internal fork of Apache Commons BCEL to 6.9.0. (markt)
- Update: Update the internal fork of Apache Commons DBCP to 2.12.0. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2024年04月23日 Tomcat 10.1.23 (schultz)
Catalina
- Update:
Deprecate and remove
sessionCounter(replaced by the addition of the active session count and the expired session count, as a reasonable approximation) andduplicates(which does not represent a possible event in current implementations) statistics from the session manager. (remm) - Fix: 68890 Align output encoding of JSPs in the Manager webapp with the XML declarations in those same files. (schultz)
- Fix:
Update Basic authentication to implement the requirements of RFC 7617
including the changing of the
trimCredentialssetting which is now defaults tofalse. Note that thetrimCredentialssetting will be removed in Tomcat 11. (markt)
Coyote
- Fix: Fix bnd jar descriptor to include the OpenSSL FFM support. (remm)
- Fix:
Add OpenSSL FFM classes to
tomcat-embed-core.jar. (remm)
not released Tomcat 10.1.22 (schultz)
Other
- Fix: Release re-built using correct JDK version.
not released Tomcat 10.1.21 (schultz)
Catalina
- Fix: Change the thread-safety mechanism for protecting StandardServer.services from a simple synchronized lock to a ReentrantReadWriteLock to allow multiple readers to operate simultaneously. Based upon a suggestion by Markus Wolfe. (schultz)
- Fix: Improve Service connectors, Container children and Service executors access sync using a ReentrantReadWriteLock. (remm)
- Fix:
Improve handling of integer overflow if an attempt is made to upload a
file via the Servlet API and the file is larger than
Integer.MAX_VALUE. (markt) - Fix: 68862: Handle possible response commit when processing read errors. (remm)
Coyote
- Add:
Add OpenSSL integration using the FFM API rather than Tomcat Native.
OpenSSL support may be enabled by adding the
org.apache.catalina.core.OpenSSLLifecycleListenerlistener on theServerelement when using Java 22 or later. (remm)
Other
- Update: Update the internal fork of Apache Commons BCEL to 6.8.2. (markt)
- Update: Update the internal fork of Apache Commons Codec to 1.16.1. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (remm)
- Add: Improvements to Chinese translations by leeyazhou. (remm)
2024年03月25日 Tomcat 10.1.20 (schultz)
Catalina
- Fix: Minor performance improvement for building filter chains. Based on ideas from pull request #702 by Luke Miao. (remm)
- Fix:
Align error handling for
WriterandOutputStream. Ensure use of either once the response has been recycled triggers aNullPointerExceptionprovided thatdiscardFacadesis configured with the default value oftrue. (markt) - Fix:
68692: The standard thread pool implementations that are
configured using the
Executorelement now implementExecutorServicefor better support NIO2. (remm) - Fix: 68495: When restoring a saved POST request after a successful FORM authentication, ensure that neither the URI, the query string nor the protocol are corrupted when restoring the request body. (markt)
- Fix:
After forwarding a request, attempt to unwrap the response in order to
suspend it, instead of simply closing it if it was wrapped. Add a new
suspendWrappedResponseAfterForwardboolean attribute onContextto control the bahavior, defaulting tofalse. (remm) - Fix:
68721: Workaround a possible cause of duplicate class
definitions when using
ClassFileTransformers and the transformation of a class also triggers the loading of the same class. (markt) - Fix: The rewrite valve should not do a rewrite if the output is identical to the input. (remm)
- Update:
Add a new
valveSkip(orVS) rule flag to the rewrite valve to allow skipping over the next valve in the Catalina pipeline. (remm) - Update:
Add
highConcurrencyStatusattribute to theSemaphoreValveto optionally allow the valve to return an error status code to the client when a permit cannot be acquired from the semaphore. (remm) - Add: Add checking of the "age" of the running Tomcat instance since its build-date to the SecurityListener, and log a warning if the server is old. (schultz)
- Fix:
When using the
AsyncContext, throw anIllegalStateException, rather than allowing anNullPointerException, if an attempt is made to use theAsyncContextafter it has been recycled. (markt)
Coyote
- Fix: Improve the HTTP/2 stream prioritisation process. If a stream uses all of the connection windows and still has content to write, it will now be added to the backlog immediately rather than waiting until the write attempt for the remaining content. (markt)
- Fix:
Add
threadsMaxIdleTimeattribute to the endpoint, to allow configuring the amount of time before an internal executor will scale back to the configuredminSpareThreadssize. (remm) - Fix:
Correct a regression in the support for user provided
SSLContextinstances that broke theorg.apache.catalina.security.TLSCertificateReloadListener. (markt)
Jasper
- Add:
Add support for specifying Java 22 (with the value
22) as the compiler source and/or compiler target for JSP compilation. If used with an Eclipse JDT compiler version that does not support these values, a warning will be logged and the default will used. (markt) - Fix:
Handle the case where the JSP engine forwards a request/response to a
Servlet that uses an
OutputStreamrather than aWriter. This was triggering anIllegalStateExceptionon code paths where there was a subsequent attempt to obtain aWriter. (markt) - Fix: Correctly handle the case where a tag library is packaged in a JAR file and the web application is deployed as a WAR file rather than an unpacked directory. (markt)
- Fix: Prevent the web application's ClassLoader from being pinned by the JSP compiler if an application uses a custom XMLInputFactory. Based upon a suggestion from Simon Niederberger. (schultz)
Cluster
- Fix: Avoid updating request count stats on async. (remm)
Other
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
- Fix: 57130: Allow digest.(sh|bat) to accept password from a file or stdin. (csutherl/schultz)
- Update: Update Checkstyle to 10.14.1. (markt)
2024年02月19日 Tomcat 10.1.19 (schultz)
Catalina
- Fix:
Correct JPMS and OSGi meta-data for
tomcat-embed-core.jarby removing reference toorg.apache.catalina.ssipackage that is no longer included in the JAR. Based on pull request #684 by Jendrik Johannes. (markt) - Fix:
Fix ServiceBindingPropertySource so that trailing
\r\nsequences are correctly removed from files containing property values when configured to do so. Bug identified by Coverity Scan. (markt) - Add: Add improvements to the CSRF prevention filter including the ability to skip adding nonces for resource name and subtree URL patterns. (schultz)
- Fix: Review usage of debug logging and downgrade trace or data dumping operations from debug level to trace. (remm)
- Fix:
68089: Further improve the performance of request attribute
access for
ApplicationHttpRequestandApplicationRequest. (markt) - Fix: 68559: Allow asynchronous error handling to write to the response after an error during asynchronous processing. (markt)
Coyote
- Fix:
Setting a
nullvalue for a cookie attribute should remove the attribute. (markt) - Fix: Make asynchronous error handling more robust. Ensure that once a connection is marked to be closed, further asynchronous processing cannot change that. (markt)
- Fix:
Make asynchronous error handling more robust. Ensure that once the call
to
AsyncListener.onError()has returned to the container, only container threads can access theAsyncContext. This protects against various race conditions that would otherwise occur if application threads continued to access theAsyncContext. - Fix: Review usage of debug logging and downgrade trace or data dumping operations from debug level to trace. In particular, most of the HTTP/2 debug logging has been changed to trace level. (remm)
- Fix:
Add support for user provided
SSLContextinstances configured onSSLHostConfigCertificateinstances. Based on pull request #673 provided by Hakan Altındağ. (markt) - Fix:
Partial fix for 68558: Cache the result of converting to
Stringfor request URI, HTTP header names and the requestContent-Typevalue to improve performance by reducing repeatedbyte[]toStringconversions. (markt) - Fix: Improve error reporting to HTTP/2 clients for header processing errors by reporting problems at the end of the frame where the error was detected rather than at the end of the headers. (markt)
- Fix: Remove the remaining reference to a stream once the stream has been recycled. This makes the stream eligible for garbage collection earlier and thereby improves scalability. (markt)
Jasper
- Fix: 68546: Generate optimal size and types for JSP imports maps, as suggested by John Engebretson. (remm)
- Fix: Review usage of debug logging and downgrade trace or data dumping operations from debug level to trace. (remm)
WebSocket
- Fix:
Correct a regression in the fix for 66508 that could cause an
UpgradeProcessorleak in some circumstances. (markt) - Fix: Review usage of debug logging and downgrade trace or data dumping operations from debug level to trace. (remm)
- Fix: Ensure that WebSocket connection closure completes if the connection is closed when the server side has used the proprietary suspend/resume feature to suspend the connection. (markt)
Web applications
- Add: Add support for responses in JSON format from the examples application RequestHeaderExample. (schultz)
Other
- Fix: Correct the remaining OSGi contract references in the manifest files to refer to the Jakarta EE contract names rather than the Java EE contract names. Based on pull request #685 provided by Paul A. Nicolucci. (markt)
- Update: Update Checkstyle to 10.13.0. (markt)
- Update: Update JSign to 6.0. (markt)
- Update: Update the packaged version of the Tomcat Migration Tool for Jakarta EE to 1.0.7. (markt)
- Update: Update Tomcat Native to 2.0.7. (markt)
- Update: Add strings for debug level messages. (remm)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2024年01月09日 Tomcat 10.1.18 (schultz)
Catalina
- Update:
68378: Align extension to MIME type mappings in the global
web.xml with those in httpd by adding
application/vnd.geogebra.slidesforggs,text/javascriptformjsandaudio/oggfor opus. (markt)
Coyote
- Fix:
Refactor the
VirtualThreadExecutorso that it can be used by the NIO2 connector which was using platform threads even when configured to use virtual threads. (markt) - Fix: Correct a regression in the fix for 67675 that broke TLS key file parsing for PKCS#8 format keys that do not specify an explicit pseudo-random function and rely on the default. This typically affects keys generated by OpenSSL 1.0.2. (markt)
- Fix:
Allow multiple operations with the same name on introspected mbeans,
fixing a regression caused by the introduction of a second
addSslHostConfigmethod. (remm) - Fix: Relax the check that the HTTP Host header is consistent with the host used in the request line, if any, to make the check case insensitive since host names are case insensitive. (markt)
- Add: 68348: Add support for the partitioned attribute for cookies including session cookies. (markt)
Web Applications
- Fix:
68035: Additional fix to the Manager application to enable
the deployment of a web application located in a Host's
appBasewhere the web application is specified by a bare (no path) WAR or directory name as shown in the documentation. (markt)
Other
- Update: Update Checkstyle to 10.12.7. (markt)
- Update: Update SpotBugs to 4.8.3. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2023年12月12日 Tomcat 10.1.17 (schultz)
Catalina
- Fix: Background processes should not be run concurrently with lifecycle operations of a container. (remm)
- Fix: Correct unintended escaping of XML in some WebDAV responses. The XML list of support locks when provided in response to a PROPFIND request was incorrectly XML escaped. (markt)
- Fix:
68227: Ensure that
AsyncListener.onComplete()is called ifAsyncListener.onError()callsAsyncContext.dispatch(). (markt) - Fix: 68228: Use a 408 status code if a read timeout occurs during HTTP request processing. Includes a test case based on code provided by adwsingh. (markt)
Jasper
- Code:
68119: Refactor the
CompositeELResolverto improve performance during type conversion operations. (markt)
Web Applications
- Fix: Examples. Improve the error handling so snakes associated with a user that drops from the network are removed from the game. (markt)
Other
- Fix: 68124: Migrate sample.war from javax to jakarta. (lihan)
- Update: Update UnboundID to 6.0.11. (markt)
- Update: Update Checkstyle to 10.12.5. (markt)
- Update: Update SpotBugs to 4.8.2. (markt)
- Update: Update Derby to 10.17.1. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
- Add: Improvements to Brazilian Portuguese translations by John William Vicente. (markt)
- Add: Improvements to Russian translations by usmazat and remm. (markt)
2023年11月14日 Tomcat 10.1.16 (schultz)
Catalina
- Fix:
67667:
TLSCertificateReloadListenerprints unreadable rendering ofX509Certificate#getNotAfter(). (michaelo) - Update:
The status servlet included in the manager webapp can now output
statistics as JSON, using the
JSON=trueURL parameter. (remm) - Update: Optionally allow ServiceBindingPropertySource to trim a trailing newline from a file containing a property-value. (schultz)
- Fix: 67793: Ensure the original session timeout is restored after FORM authentication if the user refreshes a page during the FORM authentication process. Based on a suggestion by Mircea Butmalai. (markt)
- Update:
67926:
PEMFileprints unidentifiable string representation of ASN.1 OIDs. (michaelo) - Fix:
66875: Ensure that setting the request attribute
jakarta.servlet.error.exceptionis not sufficient to trigger error handling for the current request and response. (markt) - Fix: 68054: Avoid some file canonicalization calls introduced by the fix for 65433. (remm)
- Fix:
68089: Improve performance of request attribute access for
ApplicationHttpRequestandApplicationRequest. (markt) - Fix: Use a 400 status code to report an error due to a bad request (e.g. an invalid trailer header) rather than a 500 status code. (markt)
- Fix:
Ensure that an
IOExceptionduring the reading of the request triggers always error handling, regardless of whether the application swallows the exception. (markt)
Coyote
- Add:
66670: Add
SSLHostConfig#certificateKeyPasswordFileandSSLHostConfig#certificateKeystorePasswordFile. (michaelo) - Add:
When calling
SSLHostConfigCertificate.setCertificateKeystore(ks), automatically callsetCertificateKeystoreType(ks.getType()). (markt) - Fix:
67628: Clarify how the
ciphersattribute of theSSLHostConfigis used. (markt) - Fix:
67666: Ensure TLS connectors using PEM files either work with
the
TLSCertificateReloadListeneror, in the rare case that they do not, log a warning on Connector start. (markt) - Fix: 67675: Support a wider range of KDF and ciphers for PEM files than the combinations supported by the JVM by default. Specifically, support the OpenSSL default of HmacSHA256 and DES-EDE3-CBC. (markt)
- Fix: 67927: Reloading TLS configuration can cause the Connector to refuse new connections or the JVM to crash. (markt)
- Fix: 67938: Correct handling of large TLS client hello messages that were causing the TLS handshake to fail. (markt)
- Fix:
68026: Convert selected
MessageBytevalues to String when first accessed to speed up subsequent accesses and reduce garbage collection. (markt)
Jasper
- Fix: 68068: Performance improvement for EL. Based on a suggestion by John Engebretson. (markt)
WebSocket
- Fix: Correct missing metadata in the MANIFEST of the for WebSocket client API JAR file. (markt)
Web applications
Other
- Add:
67538: Make use of Ant's
<javaversion />task to enfore the mininum Java build version. (michaelo) - Update: Update Checkstyle to 10.12.4. (markt)
- Update: Update JaCoCo to 0.8.11. (markt)
- Update: Update SpotBugs to 4.8.0. (markt)
- Update: Update BND to 7.0.0. (markt)
- Update: The minimum Java version required to build Tomcat has been raised to Java 17. (markt)
- Update: Update the OWB module to Apache OpenWebBeans 4.0.0. (remm)
2023年10月16日 Tomcat 10.1.15 (schultz)
Coyote
- Fix: 67670: Fix regression with HTTP compression after code refactoring. (remm)
jdbc-pool
- Fix: 67664: Correct a regression in the clean-up of unnecessary use of fully qualified class names in 10.1.14 that broke the jdbc-pool. (markt)
2023年10月10日 Tomcat 10.1.14 (schultz)
Catalina
- Add: 65770: Provide a lifecycle listener that will automatically reload TLS configurations a set time before the certificate is due to expire. This is intended to be used with third-party tools that regularly renew TLS certificates. (markt)
- Fix: Fix handling of an error reading a context descriptor on deployment. (remm)
- Fix: Fix rewrite rule qsd (query string discard) being ignored if qsa was also use, while it should instead take precedence. (remm)
- Fix: 67472: Send fewer CORS-related headers when CORS is not actually being engaged. (schultz)
- Add:
Improve handling of failures within
recycle()methods. (markt)
Coyote
- Fix:
67198: Ensure that the AJP connector attribute
tomcatAuthorizationtakes precedence over thetomcatAuthenticationattribute when processing anauth_typeattribute received from a proxy server. (markt) - Fix:
67235: Fix a
NullPointerExceptionwhen anAsyncListenerhandles an error with a dispatch rather than a complete. (markt) - Fix: When an error occurs during asynchronous processing, ensure that the error handling process is only triggered once per asynchronous cycle. (markt)
- Fix: Fix logic issue trying to match no argument method in IntropectionUtil. (remm)
- Fix: Improve thread safety around readNotify and writeNotify in the NIO2 endpoint. (remm)
- Fix: Avoid rare thread safety issue accessing message digest map. (remm)
- Fix: Improve statistics collection for upgraded connections under load. (remm)
- Fix: Align validation of HTTP trailer fields with standard fields. (markt)
- Fix: Improvements to HTTP/2 overhead protection. (markt)
Jasper
- Fix: 67080: Improve performance of EL expressions in JSPs that use implicit objects. Based on suggestions by John Engebretson, Anurag Dubey and Christopher Schultz. (markt)
Other
- Update: Update the internal fork of Apache Commons FileUpload to 7a8c324 (2023年09月16日, 1.x-SNAPSHOT). Due to significant refactoring in the 2.x branch requiring additional Commons IO dependencies, Tomcat has switched to tracking the 1.x branch. (markt)
- Add:
Add the
Bundle-Licenseheader to the JAR manifest for all Tomcat JARs. (markt) - Update: Update UnboundID to 6.0.10. (markt)
- Update: Update Checkstyle to 10.12.3. (markt)
- Update: Update Tomcat Native to 2.0.6. (markt)
- Update: Update Commons Pool to 2.12.0. (markt)
- Fix: 67611: Correct the download link in BUILDING.txt. (lihan)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
- Add: Improvements to Russian translations by usmazat. (markt)
2023年08月25日 Tomcat 10.1.13 (markt)
Catalina
- Fix:
If an application or library sets both a non-500 error code and the
jakarta.servlet.error.exceptionrequest attribute, use the provided error code during error page processing rather than assuming an error code of 500. (markt) - Fix: Update code comments and Tomcat output to use MiB for 1024 * 1024 bytes and KiB for 1024 bytes rather than MB and kB. (martk)
- Fix: Avoid protocol relative redirects in FORM authentication. (markt)
Web applications
- Fix: Documentation. Update documentation to use MiB for 1024 * 1024 bytes and KiB for 1024 bytes rather than MB and kB. (martk)
Other
- Add: Improvements to Chinese translations. (lihan)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations by tak7iji. (markt)
2023年08月14日 Tomcat 10.1.12 (markt)
Catalina
- Fix: 66680: When serializing a session during the session presistence process, do not log a warning that null Principals are not serializable. Pull request #638 provided by tsryo. (markt)
- Fix:
Catch
NamingExceptioninJNDIRealm#getPrincipal. It is used in Java up to 17 to signal closed connections. (fschumacher) - Fix: 66822: Use the same naming format in log messages for Connector instances as the associated ProtocolHandler instance. (markt)
- Fix:
The parts count should also lower the actual
maxParameterCountused for parsing parameters if parts are parsed first. (remm)
Coyote
- Fix:
Correct a regression introduced in 10.1.11 and use the correct
constant when constructing the default value for the
certificateKeystoreFileattribute of anSSLHostConfigCertificateinstance. (markt) - Code: Refactor HTTP/2 implementation to reduce pinning when using virtual threads. (markt)
- Fix:
Pass through ciphers referring to an OpenSSL profile, such as
PROFILE=SYSTEMinstead of producing an error trying to parse it. (remm) - Fix:
66841: Ensure that
AsyncListener.onError()is called after an error during asynchronous processing with HTTP/2. (markt) - Fix: 66842: When using asynchronous I/O (the default), include DATA frames when calculating the HTTP/2 overhead count to ensure that connections are not prematurely terminated. (markt)
- Fix: Correct a race condition that could cause spurious RST messages to be sent after the response had been written to an HTTP/2 stream. (markt)
WebSocket
- Fix:
66681: Fix a
NullPointerExceptionwhen flushing batched messages with compression enabled usingpermessage-deflate. (markt)
jdbc-pool
- Fix:
Fix the
releaseIdleCounterdoes not increment when testAllIdle releases them. Pull request #241 provided by Arun Chaitanya Miriappalli (lihan) - Fix:
Fix the
ConnectionStatestate will be inconsistent with actual state on the connection when an exception occurs while writing. Pull request #643 provided by Wenjun Xiao. (lihan)
Other
- Update: Update NSIS to 3.09. (markt)
- Update: Update Checkstyle to 10.12.2. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations. Contributed by tak7iji and Shirayuking. (markt)
- Fix:
66829: Fix quoting so users can use the
_RUNJAVAenvironment variable as intended on Windows when the path to the Java executable contains spaces. (markt) - Fix: 66834: Correct the OSGi contract references in the manifest files to refer to the Jakarta EE contract names rather than the Java EE contract names. (markt)
- Update: Update Tomcat Native to 2.0.5. (markt)
2023年07月10日 Tomcat 10.1.11 (schultz)
Catalina
- Add:
59232: Add
org.apache.catalina.core.ContextNamingInfoListener, a listener which creates context naming information environment entries. (michaelo) - Add:
66665: Add
org.apache.catalina.core.PropertiesRoleMappingListener, a listener which populates the context's role mapping from a properties file. (michaelo) - Fix:
Fix an edge case where intra-web application symlinks would be followed
if the web applications were deliberately crafted to allow it even when
allowLinkingwas set tofalse. (markt) - Update:
Add utlity config file resource lookup on
Contextto allow looking up resources from the webapp (prefixed withwebapp:) and make the resource lookup API more visible. (remm) - Fix:
Fix potential database connection leaks in
DataSourceUserDatabaseidentified by Coverity Scan. (markt) - Fix:
Make parsing of
ExtendedAccessLogValvepatterns more robust. (markt)
Coyote
- Fix:
66627: Restore the documented behaviour of
MessageBytes.getType()that it returns the type of the original content rather than reflecting the most recent conversion. (markt) - Fix: 66635: Correct certificate logging on start-up so it differentiates between keystore based keys/certificates and PEM file based keys/certificates and logs the relevant information for each. (markt)
- Fix: Refactor blocking reads and writes for the NIO connector to remove code paths that could allow a notification from the Poller to be missed resuting in a timeout rather than the expected read or write. (markt)
- Fix: Refactor waiting for an HTTP/2 stream or connection window update to handle spurious wake-ups during the wait. (markt)
WebSocket
- Fix: Improve handling of error conditions for the WebSocket server, particularly during Tomcat shutdown. (markt)
- Fix:
Correct a regression in the fix for 66574 that meant the
WebSocket session could return false for
onOpen()before theonClose()event had been completed. (markt)
Web applications
- Add:
Documentation. Expand the security guidance to cover the embedded use
case and add notes on the uses made of the
java.io.tmpdirsystem property. (markt) - Fix: 66662: Documentation. Fix a typo in the name of the algorithms attribute in the configuration section for the Digest authentication valve. Pull request #629 provided by gohilmca. (markt)
Other
- Add: Include the Windows specific binary distributions in the files uploaded to Maven Central. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations. Contributed by tak7iji. (markt)
- Update: Update UnboundID to 6.0.9. (markt)
- Update: Update Checkstyle to 10.12.1. (markt)
- Update: Update BND to 6.4.1. (markt)
- Update: Update JSign to 5.0. (markt/rjung)
- Fix: Align documentation for maxParameterCount to match hard-coded defaults. Contributed by Michal Sobkiewicz. (schultz)
2023年06月12日 Tomcat 10.1.10 (schultz)
Catalina
- Code:
Move the management of the utility executor from the
init()/destroy()methods of components to thestart()/stop()methods. (markt) - Add:
Add
org.apache.catalina.core.StandardVirtualThreadExecutor, a virtual thread based executor that may be used with one or more Connectors to process requests received by those Connectors using virtual threads. This Executor requires a minimum Java version of Java 21. (markt) - Fix:
66513: Add a per session Semaphore to the
PersistentValvethat ensures that, within a single Tomcat instance, there is no more than one concurrent request per session. Also expand the debug logging to include whether a request bypasses the Valve and the reason if a request fails to obtain the per session Semaphore. (markt) - Fix: 66609: Ensure that the default servlet correctly escapes file names in directory listings when using XML output. Based on pull request #621 by Alex Kachanov. (markt)
- Add: 66618: Add a numeric last modified field to the XML directory listings produced by the default servlet to enable sorting in the XSLT. Pull request #622 by Alex Kachanov. (markt)
- Fix: 66621: Attempts to lock a collection with WebDAV may incorrectly fail if a child collection has an expired lock. (markt)
- Fix:
66622: Deprecate the
xssProtectionEnabledsetting from theHttpHeaderSecurityFilterand change the default value tofalseas support for the associated HTTP header has been removed from all major browsers. (markt)
Coyote
- Update: Update the HTTP/2 implementation to use the prioritization scheme defined in RFC 9218 rather than the one defined in RFC 7540. (markt)
- Fix: 66602: not sending WINDOW_UPDATE when dataLength is ZERO on call SwallowedDataFramePayload. Pull request #619 by ledefe. (lihan)
Other
- Update: Update to Commons Daemon 1.3.4. (markt)
- Add: Improvements to French translations. (remm)
- Update: Update Checkstyle to 10.12.0. (markt)
- Update: Update the packaged version of the Apache Tomcat Native Library to 2.0.4 to pick up the Windows binaries built with with OpenSSL 3.0.9. (markt)
2023年05月19日 Tomcat 10.1.9 (schultz)
Catalina
- Fix:
66567: Fix missing
IllegalArgumentExceptionafter the Tomcat code was converted to using URI instead of URL. (remm) - Fix:
Escape timestamp output in
AccessLogValveif aSimpleDateFormatis used which contains verbatim characters that need escaping. (rjung) - Update:
Change output of vertical tab in
AccessLogValvefrom\vto\u000b. (rjung) - Update:
Improve performance of escaping in
AccessLogValveroughly by a factor of two. (rjung) - Update:
Improve
JsonAccessLogValve: support more patterns like for headers and attributes. Those will be logged as sub objects. (rjung) - Fix: #613: Fix possible partial corrupted file copies when using file locking protection or the manager servlet. Submitted by Jack Shirazi. (remm)
- Add: Add RateLimitFilter which can be used to mitigate DoS and Brute Force attacks. (isapir)
Coyote
- Add:
Add support for a new character set,
gb18030-2022- introduced in Java 21, to the character set caching mechanism. (markt) - Fix: Fix an edge case in HTTP header parsing and ensure that HTTP headers without names are treated as invalid. (markt)
- Update:
Deprecate the HTTP Connector settings
rejectIllegalHeaderandallowHostHeaderMismatchas they have been removed in Tomcat 11 onwards. (markt) - Fix: 66591: Fix a regression introduced in the fix for 66512 that meant that an AJP Send Headers was not sent for responses where no HTTP headers were set. (markt)
Jasper
- Fix: 66582: Account for EL having stricter requirements for static imports than JSPs when adding JSP static imports to the EL context. (markt)
WebSocket
- Fix:
66574: Refactor WebSocket session close to remove the lock on
the
SocketWrapperwhich was a potential cause of deadlocks if the application code used simulated blocking. (markt) - Fix: 66575: Avoid unchecked use of the backing array of a buffer provided by the user in the compression transformation. (remm)
- Fix: Improve exception handling when flushing batched messages during WebSocket session close. (markt)
- Fix:
66581: Update
AsyncChannelGroupUtilto align it with the current defaults for AsynchronousChannelGroup. Pull request #612 by Matthew Painter. (markt)
Other
- Add: Improvements to French translations. (remm)
- Add: Improvements to Chinese translations. (lihan)
- Update: Update Checkstyle to 10.10.0. (markt)
- Update: Update Jacoco to 0.8.10. (markt)
- Update: Update the packaged version of the Tomcat Migration Tool for Jakarta EE to 1.0.7. (markt)
2023年04月19日 Tomcat 10.1.8 (schultz)
Catalina
- Fix:
65995: Implement RFC 9239 and use
text/javascriptas the media type for JavaScript rather thanapplication/javascript. (markt) - Add: Add an access log valve that uses a json format. Based on pull request #539 provided by Thomas Meyer. (remm)
- Add:
Harden the FORM authentication process against DoS attacks by using a
reduced session timeout if the FORM authentication process creates a
session. The duration of this timeout is configured by the
authenticationSessionTimeoutattribute of the FORM authenticator. (markt) - Fix:
66527: Correct the Javadoc for the
Tomcat.addWebapp()methods that incorrectly stated that thedocBaseparameter could be a relative path. (markt) - Fix: 66524 Correct eviction ordering in WebResource cache to be LRU as intended. (schultz)
- Update:
Use server.xml to reduce the default value of
maxParameterCountfrom 10,000 to 1,000. If not configured in server.xml, the default remains 10,000. (markt) - Add:
Update Digest authentication support to align with RFC 7616. This adds a
new configuration attribute,
algorithms, to theDigestAuthenticatorwith a default ofSHA-256,MD5. (markt) - Update:
Add support code for custom user attributes in
RealmBase. Based on code from #473 by Carsten Klein. (remm) - Fix:
Expand the set of HTTP request headers considered sensitive that should
be skipped when generating a response to a
TRACErequest. This aligns with 11.0.x. (markt) - Fix:
66541: Improve handling for cached resources for resources
that use custom URL schemes. The scheme specific
equals()andhashCode()algorithms, if present, will now be used for URLs for these resources. This addresses a potential performance issue with some OSGi custom URL schemes that can trigger potentially slow DNS lookups in some configurations. Based on a patch provided by Tom Whitmore. (markt) - Fix:
When using a custom session manager deployed as part of the web
application, avoid
ClassNotFoundExceptions when validating session IDs extracted from requests. (markt) - Fix:
66543: Give
StandardContext#fireRequestDestroyEventits own log message. (fschumacher) - Fix: 66554: Initialize Random during server initialization to avoid possible JVM thread creation in the webapp context on some platforms. (remm)
- Update:
Make the server utility executor available to webapps using a Servlet
context attribute named
org.apache.tomcat.util.threads.ScheduledThreadPoolExecutor. (remm)
Coyote
- Fix: JSON filter should support specific escaping for common special characters as defined in RFC 8259. Based on code submitted by Thomas Meyer. (remm)
- Fix:
66511: Fix
GzipOutputFilter(used for compressed HTTP responses) when used with direct buffers. Patch suggested by Arjen Poutsma. (markt) - Fix: 66512: Align AJP handling of invalid HTTP response headers (they are now removed from the response) with HTTP. (markt)
- Fix:
66530: Correct a regression in the fix for bug
66442 that meant that streams without a response body did not
decrement the active stream count when completing leading to
ERR_HTTP2_SERVER_REFUSED_STREAMfor some connections. (markt)
Jasper
- Fix:
Fix bug that meant some instances of coercing a
LambdaExpressionto a functional interface invocation failed. (markt) - Fix: 66536: Fix parsing of tag files that meant that tag directives could be ignored for some tag files. (markt)
Cluster
- Fix:
66535: Redefine the
maxValidTimeattribute ofFarmWarDeployerto be the maximum time allowed between receiving parts of a transferred file before the transfer is cancelled and the associated resources cleaned-up. A new warning message will be logged if the file transfer is cancelled. (markt)
WebSocket
- Fix: 66508: When using WebSocket with NIO2, avoid waiting for a timeout before sending the close frame if an I/O error occurs during a write. (markt)
- Fix:
66548: Expand the validation of the value of the
Sec-Websocket-Keyheader in the HTTP upgrade request that initiates a WebSocket connection. The value is not decoded but it is checked for the correct length and that only valid characters from the base64 alphabet are used. (markt)
Web applications
- Fix: 66542: Documentation. Update the JNDI documentation to replace references to JavaMail with references to Jakarta Mail. (markt)
Other
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations. Contributed by Shirayuking and tak7iji. (markt)
- Add: Improvements to Chinese translations. Contributed by totoo. (markt)
- Code:
Refactor code using
MD5Encoderto useHexUtils.toHexString(). (markt) - Fix:
66507: Fix a bug that
$JAVA_OPTSis not passed to the jvm incatalina.shwhen callingversion. Patch suggested by Eric Hamilton. (lihan) - Update: Update the internal fork of Commons DBCP to f131286 (2023年03月08日, 2.10.0-SNAPSHOT). This corrects a regression introduced in 10.1.5. (markt)
- Fix:
Improve the error messages if
JRE_HOMEorJAVA_HOMEare not set correctly. On windows, align the handling ofJRE_HOMEandJAVA_HOMEfor the start-up scripts and the service install script. (markt) - Update: Update to the Eclipse JDT compiler 4.27. (markt)
- Update: Update UnboundID to 6.0.8. (markt)
- Update: Update Checkstyle to 10.9.3. (markt)
- Update: Update Jacoco to 0.8.9. (markt)
- Fix: Enhance PEMFile to load from an InputStream. Patch provided by Romain Manni-Bucau. (schultz)
2023年03月03日 Tomcat 10.1.7 (schultz)
General
- Fix:
Fix a bug that memory allocation is larger than limit in
SynchronizedStackto reduce memory footprint. (lihan)
Catalina
- Add:
Add support for
txt:andrnd:rewrite map types from mod_rewrite. Based on a pull request #591 provided by Dimitrios Soumis. (remm) - Update: Provide a more appropriate response (501 rather than 400) when rejecting an HTTP request using the CONNECT method. (markt)
- Fix: 66488: Correct a regression introduced in the fix for bug 66196 that meant that the HTTP headers and/or request line could get corrupted (one part overwriting another part) within a single request. (markt)
- Fix: 66491: Revert the switch to using the ServiceLoader mechanism to load the custom URL protocol handlers that Tomcat uses. The original system property based approach has been restored. (markt)
Coyote
- Add: Add a check for the validity of the scheme pseudo-header in HTTP/2. (markt)
- Fix: 66482: Restore inline state after async operation in NIO2, to account the fact that unexpected exceptions are sometimes thrown by the implementation. Patch submitted by zhougang. (remm)
2023年02月24日 Tomcat 10.1.6 (schultz)
Catalina
- Fix: Allow a Valve to access cookies from a request that cannot be mapped to a Context. (markt)
- Fix: 66438: Correct names of Jakarta modules in JPMS metadata. (markt)
- Update: Switch to using the ServiceLoader mechanism to load the custom URL protocol handlers that Tomcat uses. (markt)
- Fix: Avoid possible ISE when scanning from bad JAR URLs, to restore the previous behavior following the removal of Java 9+ reflection code which caught the ISE. (remm)
- Fix:
Refactor uses of
String.replaceAll()to useString.replace()where regular expressions where not being used. Pull request #581 provided by Andrei Briukhov. (markt) - Add: Add error report valve that allows redirecting to of proxying from an external web server. Based on code and ideas from pull request #506 provided by Max Fortun. (remm)
- Add:
66470: Add the Shared Address Space defined by RFC 6598
(100.64.0.0/10) to the regular expression used to identify internal
proxies for the
RemoteIpFilterandRemoteIpValve. (markt) - Fix:
66471: Fix JSessionId secure attribute missing When
RemoteIpFilterdetermines that this request was submitted via a secure channel. (lihan)
Coyote
- Add: Log basic information for each configured TLS certificate when Tomcat starts. (markt)
- Fix: 66442: When an HTTP/2 response must not include a body, ensure that the end of stream flag is set on the headers frame and that no data frame is sent. (markt)
- Fix:
66455: Fix the cause of a potential
ClassCastExceptionwhen processing aWINDOW_UPDATEframe on an HTTP/2 connection where the flow control window for the overall connection has been exhausted. (markt) - Fix:
Fix a regression introduced in 10.1.0-M17 that prevented HTTP/2
connections from timing out when using a Connector configured with
useAsyncIO=true(the default). (markt) - Add:
Provided dedicated loggers
(
org.apache.tomcat.util.net.NioEndpoint.certificate/org.apache.tomcat.util.net.Nio2Endpoint.certificate) for logging of configured TLS certificates. (markt)
Jasper
Web applications
Other
- Update: Update BND to 6.4.0. (markt)
- Add: Improvements to Korean translations. (woonsan)
- Update: Update the packaged version of the Apache Tomcat Native Library to 2.0.3 to pick up the Windows binaries built with with OpenSSL 3.0.8. (markt)
2023年01月13日 Tomcat 10.1.5 (markt)
Catalina
- Fix:
66388: Correct a regression in the refactoring that replaced
the use of the
URLconstructors. The regression broke lookups for resources that contained one or more characters in their name that required escaping when used in a URI path. (markt) - Fix:
66392: Change the default value of
AccessLogValve's file encoding to UTF-8 and update documentation. (lihan) - Fix:
66393: Align
ExtendedAccessLogValve's x-P(XXX) with the documentation. (lihan)
Coyote
- Fix:
When resetting an HTTP/2 stream because the final response has been
generated before the request has been fully read, use the HTTP/2 error
code
NO_ERRORso that client does not discard the response. Based on a suggestion by Lorenzo Dalla Vecchia. (markt) - Fix: 66385: Correct a bug in HTTP/2 where a non-blocking read for a new frame with the NIO2 connector was incorrectly made using the read timeout leading to unexpected stream closure. (markt)
Jasper
- Fix:
66370: Change the default of the
org.apache.el.GET_CLASSLOADER_USE_PRIVILEGEDsystem property totrueunless the EL library is running on Tomcat in which case the default remainsfalseas the EL library is already called from within a privileged block and skipping the unnecessary privileged block improves performance. (markt) - Add:
Add support for specifying Java 21 (with the value
21) as the compiler source and/or compiler target for JSP compilation. If used with an Eclipse JDT compiler version that does not support these values, a warning will be logged and the default will used. (markt)
Other
- Update: Update the internal fork of Apache Commons BCEL to 2ee2bff (2023年01月03日, 6.7.1-SNAPSHOT). (markt)
- Update: Update the internal fork of Apache Commons Codec to 3eafd6c (2023年01月03日, 1.16-SNAPSHOT). (markt)
- Update: Update the internal fork of Apache Commons FileUpload to 34eb241 (2023年01月03日, 2.0-SNAPSHOT). (markt)
- Update: Update the internal fork of Apache Commons DBCP to f131286 (2023年01月03日, 2.10.0-SNAPSHOT). (markt)
- Add: Improvements to Japanese translations. Contributed by Shirayuking. (markt)
- Add: Improvements to Portuguese translations. Contributed by Guilherme Custódio. (markt)
- Update: Update to the Eclipse JDT compiler 4.26. (markt)
- Update: Update Checkstyle to 10.6.0. (markt)
- Update: Update Unboundid to 6.0.7. (markt)
- Update: Update SpotBugs to 4.7.3. (markt)
2022年12月09日 Tomcat 10.1.4 (markt)
Other
- Update: Update the packaged version of the Apache Tomcat Migration Tool for Jakarta EE to 1.0.6. (markt)
not released Tomcat 10.1.3 (markt)
Catalina
- Fix:
Correct the default implementation of
HttpServletRequest.isTrailerFieldsReady()to returntrueso it is consistent with the default implementation ofHttpServletRequest.getTrailerFields()and with the Servlet API provided by the Jakarta EE project. (markt) - Fix:
Refactor
WebappLoaderso it only has a runtime dependency on the migration tool for Jakarta EE if configured to use the converter as classes are loaded. (markt) - Fix: Improve the behavior of the credential handler attribute that is set in the Servlet context so that it actually reflects what is used during authentication. (remm)
- Fix:
66359: Update javadoc for RemoteIpValve and RemoteIpFilter with
correct
protocolHeaderdefault value of "X-Forwarded-Proto". (lihan)
Coyote
- Fix: When an HTTP/2 stream was reset, the current active stream count was not reduced. If enough resets occurred on a connection, the current active stream count limit was reached and no new streams could be created on that connection. (markt)
Web applications
- Fix: 66348: Update the JARs listed in the class loader documentation and note which ones are optional. (markt)
- Fix: Documentation. Replace references in the application developer's guide to CVS with more general references to a source code control system. (markt)
Other
- Code: Refactor code base to replace use of URL constructors. While they are deprecated in Java 20 onwards, the reasons for deprecation are valid for all versions so move away from them now. (markt)
- Code: Refine the Tomcat native image metadata to avoid including unintended non-Tomcat resources. Pull request #569 provided by Sébastien Deleuze. (markt)
- Update: Update the internal fork of Apache Commons BCEL to b015e90 (2022年11月28日, 6.7.0-RC1). (markt)
- Update: Update the internal fork of Apache Commons Codec to ae32a3f (2022年11月29日, 1.16-SNAPSHOT). (markt)
- Update: Update to Commons Daemon 1.3.3. (markt)
- Update: Update the internal fork of Apache Commons FileUpload to aa8eff6 (2022年11月29日, 2.0-SNAPSHOT). (markt)
- Add: Improvements to Japanese translations. Contributed by Shirayuking and tak7iji. (markt)
2022年11月14日 Tomcat 10.1.2 (markt)
Catalina
- Add:
66209: Add a configuration option to allow bloom filters used
to index JAR files to be retained for the lifetime of the web
application. Prior to this addition, the indexes were always flushed by
the periodic calls to
WebResourceRoot.gc(). As part of this addition, configuration of archive indexing moves fromContexttoWebResourceRoot. Based on a patch provided by Rahul Jaisimha. (markt) - Fix:
66330: Correct a regression introduced when fixing
62897 that meant any value configured for
skipMemoryLeakChecksOnJvmShutdownon theContextwas ignored and the default was always used. (markt) - Fix:
66331: Fix a regression in refactoring for
Stackon theSystemLogHandlerwhich caught incorrect exception. (lihan) - Fix:
66338: Fix a regression that caused a nuance in refactoring
for
ErrorReportValve. (lihan) - Fix:
Escape values used to construct output for the
JsonErrorReportValveto ensure that it always outputs valid JSON. (markt)
Coyote
- Fix: Correct the date format used with the expires attribute of HTTP cookies. A single space rather than a single dash should be used to separate the day, month and year components to be compliant with RFC 6265. (markt)
- Add: Include the name of the current stream state in the error message when a stream is cancelled due to an attempt to write to the stream when it is in a state that does not permit writes. (markt)
- Code:
NIO writes never return -1 so refactor
CLOSED_NIO_CHANNELnot to do so and remove checks for this return value. Based on #562 by tianshuang. (markt) - Code:
Remove unnecessary code that exposed the
asyncTimeoutto components that never used it. (markt)
Jasper
- Fix:
66294: Make the use of a privileged block to obtain the
thread context class loader added to address 62080 optional
and disabled by default. This is now controlled by the
org.apache.el.GET_CLASSLOADER_USE_PRIVILEGEDsystem property. (markt) - Fix: 66317: Fix for Lambda coercion security manager missing privileges. Based on pull request #557 by Isaac Rivera Rivas (lihan)
- Fix: 66325: Fix concurrency issue in evaluation of expression language containing lambda expressions. (markt)
jdbc-pool
Other
- Update: Update to Commons Daemon 1.3.2. (markt)
- Fix:
66323: Move module start up parameters from
JDK_JAVA_OPTIONStoJAVA_OPTSnow that the minimum Java version is 11 and these options are always required. (markt) - Add: Improvements to Chinese translations. Contributed by DigitalCat and lihan. (markt)
- Add: Improvements to French translations. Contributed by Mathieu Bouchard. (markt)
- Add: Improvements to Japanese translations. Contributed by Shirayuking. (markt)
- Fix: Correct a regression in the removal of the APR connector that broke Graal native image support. Pull request #564 provided by Sébastien Deleuze. (markt)
- Update: Update the packaged version of the Apache Tomcat Native Library to 2.0.2 to pick up the Windows binaries built with with OpenSSL 3.0.7. (markt)
- Update: Update the packaged version of the Apache Tomcat Migration Tool for Jakarta EE to 1.0.5. (markt)
2022年10月11日 Tomcat 10.1.1 (markt)
Catalina
- Fix:
Update the
RewriteValveto perform pattern matching using dotall mode to avoid unexpected behaviour if the URL includes encoded line terminators. (markt)
Coyote
- Fix: 66276: Fix incorrect class cast when adding a descendant of HTTP/2 streams. (lihan)
- Fix: 66281: Fix unexpected timeouts that may appear as client disconnections when using HTTP/2 and NIO2. (markt)
- Fix:
Enforce the requirement of RFC 7230 onwards that a request with a
malformed
content-lengthheader should always be rejected with a 400 response. (markt)
Jasper
- Fix:
66277: Fix regressions in refactoring from
StackArrayDeque. - Add:
Add support for specifying Java 20 (with the value
20) as the compiler source and/or compiler target for JSP compilation. If used with an Eclipse JDT compiler version that does not support these values, a warning will be logged and the default will used. (markt)
Web applications
- Fix:
Documentation. Document the
nonceRequestParameterNameattribute for theCsrfPreventionFilter. Based on #553 by Mert Ülkgün. (markt)
Other
- Update: Update to the Eclipse JDT compiler 4.23. (markt)
- Update: Update Objenesis to 3.2. (markt)
- Update: Update UnboundID to 6.0.6. (markt)
- Update: Update Checkstyle to 10.3.4. (markt)
- Update: Update JaCoCo to 0.8.8. (markt)
- Update: Update SpotBugs to 4.7.2. (markt)
- Update: Update JSign to 4.2. (markt)
- Update: Update Derby to 10.16.1.1. (markt)
- Add: Improvements to Chinese translations. (markt)
- Add: Improvements to Czech translations. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations. Contributed by tak7iji and Shirayuking. (markt)
- Add: Improvements to Korean translations. (markt)
- Add: Improvements to Spanish translations. (markt)
2022年09月26日 Tomcat 10.1.0 (markt)
Coyote
- Update: Update Panama OpenSSL code for the extensive Java 20 changes. (remm)
- Fix: Fix a regression in refactoring for Hashtables which caused mbeans to lose many of their attributes. (remm)
Jasper
- Add: 66203: Log an error message when the JSP compiler is unable to create the output directory for the generated code. (markt)
Other
- Add: Further automation to the build process to reduce the number of manual steps that release managers must perform. (markt)
not released Tomcat 10.1.0-M20 (markt)
Coyote
- Fix: Prepare OpenSSL Panama module for Java 20 API changes. (remm)
Other
- Update: Update the Apache Tomcat migration tool for Jakarta EE library to 1.0.4. (markt)
not released Tomcat 10.1.0-M19 (markt)
Coyote
- Fix: Correct a regression in the previous fix for 66236. (markt)
not released Tomcat 10.1.0-M18 (markt)
Catalina
- Fix: Correct handling of HTTP TRACE requests where there are multiple instances of an HTTP header with the same name. (markt)
- Fix: Implement the requirements of RFC 7231 and do not include sensitive headers in responses to HTTP TRACE requests. (markt)
- Fix: Implement the clarification in RFC 9110 that the units in HTTP range specifiers are case insensitive. (markt)
- Fix: Properly-escape role and group information when writing MemoryUserDatabase to an XML file. (schultz)
- Fix: Move control of XML-export logic from individual support classes into MemoryUserDatabase.save(). Deprecate and discontinue use of MemoryUser, MemoryRole, and MemoryGroup classes. (schultz)
- Fix: 66183: When logging cookie values in an access log valve and there are multiple cookies with the same name, log all cookie values rather than just the first. Based on pull request #541 by Han Li. (markt)
- Fix:
66184: Ensure that JULI root loggers have a default level of
INFO. Pull request #533 provided by Piotr P. Karwasz. (markt) - Fix: Improve handling of stack overflow errors when parsing SSI expressions. (markt)
- Fix: 66120: Enable FORM authentication to work correctly if session persistence and restoration occurs during the authentication process. (markt)
- Fix: 66233: Include an error message when sending a 400 response because a request has too many cookies. (markt)
- Fix: When web application deployment fails due to JARs with duplicate fragment names, improve the error message by listing the JARs that contain the duplicates. Based on pull request #535 by Mads Rolsdorph. (markt)
- Fix:
Replace logging thread for JULI's
AsyncFileHandlerwith an executor to protect against failure of the logging thread. Based on pull request #545 by Piotr P. Karwasz. (markt)
Coyote
- Fix: Avoid potential NPE by skipping duplicate accept check when using a Unix Domain Socket. Based on #532 by Han Li. (markt)
- Fix: Address an edge case in HTTP header parsing that allowed CRCRLF to be used as a valid line terminator. (markt)
- Fix: Ensure HTTP/2 requests that include connection specific headers are rejected. (markt)
- Fix:
When processing HTTP/2 requests, allow a
hostheader to be used in place of an:authorityheader. (markt) - Fix:
When processing HTTP/2 requests, allow a
hostheader and an:authorityheader to be present providing they are consistent. (markt) - Fix:
When processing HTTP/2 requests, reject requests containing multiple
hostheaders. (markt) - Fix:
Make parsing of invalid filename directives in
Content-Dispositionheaders more robust. Invalid filename directives will now be ignored rather than triggering a 500 response. (markt) - Fix:
66194: Log HTTP/2 stream closures (usually caused by client
errors) via a
UserDataHelperto broadly align it with the behaviour of HTTP/1.1 for parsing issues and exceeding limits. (markt) - Fix: 66196: Align HTTP/1.1 with HTTP/2 and throw an exception when attempting to commit a response with an header value that includes one or more characters with a code point above 255. (markt)
- Fix:
66236: Implement support for the special values zero and
minus one when configuring
maxSavePostSizefor a Connector when used in conjunction with TLS renegotiation. (markt) - Fix: 66240: Avoid int overflow when parsing octets by limiting the maximum value to 255. Based on a PR #548 by Stefan Mayr. (lihan)
- Fix: #550: Correctly handle case where a Servlet responds to a request with an expectation with a 2xx response without reading the request body. Pull request provided by Malay Shah. (markt)
- Fix: #551: Avoid potential IndexOutOfBoundsException by fixing incorrect check when matching HTTP/2 preface. Submitted by 刘文章. (lihan)
Jasper
- Fix: Improve handling of stack overflow errors when parsing EL expressions. (markt)
- Fix:
Correct parsing of integer and floating point literals in EL expressions
so that larger values are correctly parsed to
BigIntegerandBigDecimalrespectively. (markt) - Fix: 66235: Fix various issues with the bean resolver used for Graal. (remm)
- Fix:
Improve the performance of the
ImportHandlerin the Expression Language implementation. This removes a previous optimisation that is now detrimental rather than helpful. Pull request #547 provided by rmannibucau. (markt) - Fix: Improve handling of EL error messages so instances of Number are not formatted in unexpected ways. (markt/kkolinko)
- Fix: Switch to using ELException rather than IllegalArgumentException when a type conversion fails during an EL arithmetic operation. This is an EL error so ELException seems more appropriate. (markt)
- Fix:
Fix a bug in
MethodExpressionhandling that triggered an error when invoking a static method on an instance of the class rather than directly on the class. (markt) - Fix:
Use
BigInteger.remainder()rather thanBigInteger.mod()when performing the modulus operation for instances ofBigIntegeras part of an EL expression. (markt)
Cluster
- Fix:
To aid future additions of new functionality, rather than throw an
IllegalArgumentExceptionif aDeltaRequestis passed an unrecognised action type, a warning message will now be logged. (markt) - Fix: 66120: Enable FORM authentication to work correctly if session failover occurs during the authentication process. (markt)
WebSocket
- Add: 62312: Add support for authenticating WebSocket clients with an HTTP forward proxy when establishing a connection to a WebSocket endpoint via a forward proxy that requires authentication. Based on a patch provided by Joe Mokos. (markt)
Other
- Fix: Ensure that zip archives use UTC for file modification times to ensure repeatable builds across time zones. (markt)
- Add: Improvements to Chinese translations. (lihan)
- Add: Improvements to Czech translations. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to German translations. (markt)
- Add: Improvements to Japanese translations. Contributed by tak7iji and Shirayuking. (markt)
- Add: Improvements to Korean translations. Contributed by 수현. (markt)
- Add: Improvements to Brazilian Portuguese translations. (markt)
- Add: Improvements to Russian translations. (markt)
- Add: Improvements to Spanish translations. (markt)
- Update: Update the Apache Tomcat migration tool for Jakarta EE library to 1.0.3. (markt)
2022年07月20日 Tomcat 10.1.0-M17 (markt)
Catalina
- Fix: 66104: Avoid error message by not trying to clean up old files from the logging directory before the directory has been created. Based on #521 by HanLi. (markt)
- Update:
Update the Jakarta Common Annotations API to 2.1.1. This deprecates the
ManagedBeanannotation which will be removed in a future release. (markt)
Coyote
- Add:
Provide dedicated loggers
(
org.apache.tomcat.util.net.NioEndpoint.handshake/org.apache.tomcat.util.net.Nio2Endpoint.handshake) for TLS handshake failures. (markt) - Add: Enable the use of the FIPS provider for TLS enabled Connectors when using Tomcat Native 1.2.34 onwards built with OpenSSL 3.0.x onwards. (markt)
- Code:
Remove the
jvmRoutesystem property used to configure a default value for thejvmRouteattribute of an Engine. (markt) - Update: Update experimental Panama modules with support for OpenSSL 3.0+. OpenSSL 1.1 remains supported. (remm)
- Fix: Correct a regression in the refactoring to support experimentation with project Loom that broke HTTP/2 support if async IO was disabled. (markt)
- Fix: Fix duplicate Poller registration with HTTP/2, NIO and async IO that could cause HTTP/2 connections to unexpectedly fail. (markt)
- Update: Refactor Panama module to better take advantage of the Panama preview API updates and fixes. Improves memory session usage and avoids some allocations. Review from Maurizio Cimadamore. (remm)
- Update: Update the minimum recommended version of the Tomcat Native Library to 2.0.1. (markt)
Jasper
- Add:
Add support for specifying Java 19 (with the value
19) as the compiler source and/or compiler target for JSP compilation. If used with an Eclipse JDT compiler version that does not support these values, a warning will be logged and the default will used. (markt)
WebSocket
- Update: Remove configuration settings related to the restriction on WebSocket endpoint deployment that was removed in version 2.1 of the specification. (markt)
Web applications
- Fix:
Documentation. 62245: Include
contextXsltFilewhen discussing options for configuring directory listings. (markt) - Fix: Examples. Fix CVE-2022-34305, a low severity XSS vulnerability in the Form authentication example. (markt)
- Fix:
Documentation. Expand the description of the
useSendfileattribute for HTTP/2 and reference the possibility of file locking when using this feature on Windows operating systems. (markt)
Other
- Update: Update to bnd 6.3.1. (markt)
- Update: The minimum Ant version required to build Tomcat 10.1.x is now 1.10.2. (markt)
- Add: Add additional automation to the build process to reduce the number of manual steps that release managers must perform. (schultz)
- Add: Implement support for reproducible builds. Reproducible builds are independent of operating system but require the same Ant version and same JDK (vendor and version) to be used as associated version information is embedded in a number of build outputs such as JAR file manifests. (markt)
- Update: Update the minimum supported version of Tomcat Native to 1.2.34 to allow the removal of the deprecated Java API associated with features that will be removed in Tomcat Native 2.0.x. (markt)
- Fix:
Remove and/or update references to the removed
org.apache.tomcat.util.threads.respackage. TheLocalStrings*.propertiesfiles in that package were moved toorg.apache.tomcat.util.threadspackage for consistency with the rest of the Tomcat code base. (markt) - Fix:
66134: The NSIS based Tomcat installer for Windows now
correctly handles the combination of
TomcatAdminRolesdefined in a configuration file and selecting the Manager and/or Host Manager web applications in the installer's GUI. (markt) - Update: Update the OWB module to Apache OpenWebBeans 2.0.27. (remm)
- Update: Update the CXF module to Apache CXF 3.5.3. (remm)
- Update: Update the Apache Tomcat migration tool for Jakarta EE library to 1.0.1. (markt)
- Update: Update the packaged version of the Tomcat Native Library to 2.0.1 to pick up the Windows binaries built with with OpenSSL 3.0.5. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations contributed tak7iji. (markt)
2022年06月09日 Tomcat 10.1.0-M16 (markt)
Catalina
- Fix: Update the memory leak protection code to support stopping application created executor threads when running on Java 19 and later. (markt)
- Fix:
Improve the error message if a required
--add-opensoption is missing. (markt) - Fix:
Disable the memory leak correction code enabled by the Context attribute
clearReferencesObjectStreamClassCacheswhen running on a JRE that includes a fix for the underlying memory leak. (markt) - Fix: #515: Avoid deadlock on startup with some utility executor configurations. Submitted by Han Li. (remm)
- Fix:
66068: Ensure that the changes made to a request by the
RemoteIPValvepersist after the request is put into asynchronous mode. (markt) - Add:
Include the major version in the recommended version used for Tomcat
Native with the
AprLifecycleListener. (markt) - Code: Remove the reporting of the unused APR feature flags. (markt)
Coyote
- Fix:
Additional fix for 65118. Fix a potential
NullPointerExceptionwhen pruning closed HTTP/2 streams from the connection. (markt) - Code:
Refactor synchronization blocks locking on
SocketWrapperto useReentrantLockto support users wishing to experiment with project Loom. (markt) - Fix: 66076: When using TLS with non-blocking writes and the NIO connector, ensure that flushing the buffers attempts to empty all of the output buffers. (markt)
- Fix: 66084: Correctly calculate bytes written to a response. Pull request #516 provided by aooohan HanLi. (markt)
- Add: Correct a regression in the support added for encrypted PKCS#1 formatted private keys in the previous release that broke support for unencrypted PKCS#1 formatted private keys. (jfclere/markt)
- Update: Remove support for NPN when using the Tomcat Native Connector as NPN was never standardised and browser support for NPN was removed several years ago. (markt)
Jasper
- Fix: Update XML schema used for generated web fragments to use the Servlet 6.0 web fragment schema. (markt)
- Fix: Update the XML schema used by the web fragment defined for the Jasper EL JAR to use the Servlet 6.0 web fragment schema. (markt)
- Fix:
Update
ImportHandleroptimisation for new classes introduced in Java 19. (markt)
Web Socket
- Fix: Update the XML schema used by the web fragment defined for the WebSocket JAR to use the Servlet 6.0 web fragment schema. (markt)
Web applications
- Fix: 66064: Update the building page in the documentation web application to reflect changes in required Java version and source repository. (markt)
- Fix: Documentation. Make the description of the HTTP/1.1 configuration attributes that control the maximum allowed HTTP header size more specific. (markt)
Tribes
- Fix: Increase the default buffer size for replication messages from 43800 to 65536 bytes. This is expected to improve performance for large messages when running on Linux based systems. (markt)
Other
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations contributed by Shirayuking and tak7iji. (markt)
- Add: Improvements to Chinese translations contributed by Dingzi2012. (markt)
2022年05月16日 Tomcat 10.1.0-M15 (markt)
Catalina
- Code:
65853: Refactor the
CsrfPreventionFilterto make it easier for sub-classes to modify the nonce generation and storage. Based on suggestions by Marvin Fröhlich. (markt) - Fix:
65991: Avoid NPE with
SSLAuthenticatorwhenboundOnInitis used on a connector, during the check for client certificate authentication availability. (remm) - Fix:
66009: Use
getSubjectX500Principal().toString()rather thangetSubjectX500Principal().getName(...)to retrieve a certificate DN, to match the output of the deprecatedgetSubjectDN().getName()that was used previously. (remm) - Add:
Revert the change in 10.1.0-M11 that added a mapping of
Shift_JISfor thejalocale to the default mappings used byServletResponse.setLocale()as it caused regressions for applications using UTF-8. (markt) - Add: Provide a property source that sources values from Kubernetes service bindings. Pull request #512 provided by Sumit Kulhadia and Gareth Evans. (markt)
Coyote
- Add:
#501: Add new
maxHttpRequestHeaderSizeandmaxHttpResponseHeaderSizeattributes which allow setting the maximum HTTP header sizes independently. If not specified, the value of themaxHttpHeaderSizeconnector attribute will be used. Submitted by Zhongming Hua. (remm) - Fix: The root cause of the Linux kernel duplicate accept bug has been identified along with the version of the kernel that includes the fix. The error message displayed when this bug occurs has been updated to reflect this new information and to advise users to update to a version of the OS that uses kernel 5.10 or later. Thanks to Christopher Gual for the research into this issue. (markt)
- Code: Remove the custom UTF-8 decoder that was introduced to work around various UTF-8 decoding bugs in Java. These issues were fixed in early Java 8 releases. Now the minimum Java version is 11, we can be sure that Tomcat will not be running on a JRE where these issues are present. (markt)
- Fix: 66023: Improve the fix for 65726 and support HTTP upgrade with a request body for a wider set of use cases. (markt)
- Fix: 66035: Add NULL check on the SSL session reference in the Panama code before accessing the session id and creation time. (remm)
- Add: Add support for encrypted PKCS#1 formatted private keys when configuring the internal, in memory key store. Based on #511. (jfclere/markt)
- Fix:
Remove the
prestartminSpareThreadsattribute of theStandardThreadExecutorsince all core threads are always started by default making this attribute meaningless. Pull request #510 provided by Aooohan. (markt)
Jasper
- Update:
To align with the JSP 3.1 specification, make the
jsp:pluginaction a NO-OP. No HTML will be generated as a result thejsp:pluginaction being included in a JSP. This is be because the associated HTML elements are no longer supported by any major browser. (markt) - Fix: 66031: Fix NPE when using a custom JspFactory. Patch by Jean-Louis Monteiro. (remm)
Webapps
- Fix:
66008: In the documentation web application, clarify the
recommendation for the use the
trimSpacesoption for Jasper in production environments. (markt) - Fix:
Update the documentation web application to state that the
EncryptInterceptordoes not provide sufficient protection to run Tomcat clustering over an untrusted network. This is CVE-2022-29885. (markt)
Other
- Add: Improvements to Chinese translations contributed by shawn. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to German translations contributed by Thomas Hoffmann. (markt)
- Add: Improvements to Japanese translations contributed by Shirayuking. (markt)
- Add: Improvements to Korean translations. (woonsan)
- Update: Update to Commons Daemon 1.3.1. This fixes a known regression in 1.3.0 when configuring the Windows service with custom scripts as described in 66055. (markt)
- Update: Update to JSign 4.1. (markt)
- Update: Update the packaged version of the Tomcat Native Library to 1.2.33 to pick up Windows binaries built with OpenSSL 1.1.1o.(markt)
2022年04月01日 Tomcat 10.1.0-M14 (markt)
Catalina
- Fix:
65736: Disable the
forceStringoption for the JNDIBeanFactoryand replace it with an automatic search for an alternative setter with the same name that accepts aString. This is a security hardening measure. (markt) - Add:
Remove the
WebappClassLoaderBase.getResources()method as it is not used and if something accidentally exposes the class loader this method can be used to gain access to Tomcat internals. (markt)
not released Tomcat 10.1.0-M13 (markt)
Catalina
- Code:
Update the JASPIC 2.0 API to Jakarta Authentication 3.0 (JASPIC was
renamed for Jakarta EE 10) including the implementation of the new
methods on
AuthConfigFactory. (markt) - Code: Harden the CredentialHandler implementations by switching to a constant-time implementation for credential comparisons. (schultz/markt)
Coyote
- Fix: Use a constant for the default TLS cipher suite. This will allow skipping setting it in some cases (for example, it does not make sense for OpenSSL TLS 1.3). (remm)
- Fix: #487: Improve logging of unknown settings frames. Pull request by Thomas Hoffmann. (remm)
- Add: 65975: Add a warning if a TLS virtual host is configured with optional certificate authentication and the containing connector is also configured to support HTTP/2 as HTTP/2 does not permit optional certificate authentication. (markt)
- Add:
65975: Add a warning if a TLS virtual host is configured for
TLS 1.3 with a JSSE implementation and a web application is configured
for
CLIENT-CERTauthentication.CLIENT-CERTauthentication requires post-handshake authentication (PHA) when used with TLS 1.3 but the JSSE TLS 1.3 implementation does not support PHA. (markt) - Fix: Improve the recycling of Processor objects to make it more robust. (markt)
Jasper
- Fix: 65959: Serialize Function as String[] rather Class[]. (remm)
Web applications
- Fix:
65947: Correct the name of HTTP/1.1 configuration property
(
maxHttpHeaderSize) that is inherited by the HTTP/2 upgrade protocol. Thanks to Thomas Hoffmann. (markt) - Fix:
65952: Align
--add-opensconfiguration for jsvc with the current Tomcat scripts. (markt) - Fix: Correct the AJP and HTTP/1.1 Connector configuration pages in the documentation web application to show which attributes are applicable to all Connectors and which are implementation specific. (markt)
Other
- Fix: Correct a spelling mistake in the German translations. Thanks to Thomas Hoffmann. (markt)
- Fix:
65951: Use the
tomcat.outputproperty for OSGi bundle manifest paths. (isapir) - Update: Update to Commons Daemon 1.3.0. (markt)
- Update: Update to Checkstyle 10.0. (markt)
- Update: Update to SpotBugs 4.6.0. (markt)
- Add:
Expand the
spotbugsAnt task to also cover test code. (markt) - Update: Update to bnd 6.2.0. (markt)
- Update: Remove OSGi annotations dependency as it is no longer required with bnd 6.2.0. (markt)
- Update: Update to the Eclipse JDT compiler 4.23. (markt)
- Code: Refactor the resource files for the Apache Tomcat installer for Windows so that all the resource files are located in a single directory in the source tree. (markt)
- Update: Update the packaged version of the Tomcat Native Library to 1.2.32 to pick up Windows binaries built with OpenSSL 1.1.1n.(markt)
- Add: Improvements to Chinese translations contributed by 15625988003. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations contributed by tak7iji. (markt)
- Add:
Expand coverage of translations for
jakarta.elpackage. Based on #488 from Volodymyr Siedlecki. (markt)
2022年03月14日 Tomcat 10.1.0-M12 (markt)
Catalina
- Fix: #477: Update the default list of JARs to skip to include the Apache Log4j JAR for Jakarta EE platforms. Pull request by Michael Seele. (markt)
- Fix:
65921: The
typesubstitution flag for the rewrite valve should set the content type for the response, not the request. (markt) - Fix: #479: Enable the rewrite valve to redirect requests when the original request cannot be mapped to a context. This typically happens when no ROOT context is defined. Pull request by elkman. (markt)
- Fix:
65940: Fix
NullPointerExceptionif an exception occurs during the destruction of a Servlet. (markt)
Coyote
- Fix: Fix regression introduced with 65757 bugfix which better identified non request threads but which introduced a similar problem when user code was doing sequential operations in a single thread. Test case code submitted by Istvan Szekely. (remm)
- Fix: Fix potential thread-safety issue that could cause HTTP/1.1 request processing to wait, and potentially timeout, waiting for additional data when the full request has been received. (markt)
- Fix:
Throw
IOExceptionrather thanIllegalStateExceptionwhen the application attempts to write to an HTTP/2 stream after the client has closed the stream. (markt)
Jasper
- Fix: When resolving methods in EL expressions that use beans and/or static fields, ensure that any custom type conversion is considered when identifying the method to call. (markt)
Web applications
- Fix:
Correct the name of the
valueattribute in the new documentation ofOpenSSLConfCmdelements. (rjung)
WebSocket
- Fix: Fix typo in JPMS substitution configuration for WebSocket client module. (markt)
2022年02月28日 Tomcat 10.1.0-M11 (markt)
Catalina
- Add:
Add
ha-api-*.jarandjaxws-rt-*.jarto the list of JARs to skip when scanning for TLDs, web fragments and annotations. (michaelo) - Add:
Expand the default mappings used by
ServletResponse.setLocale()to include a mapping from thejalocale to theShift_JISencoding. (markt) - Fix:
65806: Improve the handling of session ID generation when the
default algorithm for
SecureRandom(SHA1PRNG) is not supported by the configured providers as will be the case for a FIPS compliant configuration. (markt) - Add:
#463: Add support for additional user attributes to
TomcatPrincipalandGenericPrincipal. Patch provided by Carsten Klein. (michaelo) - Fix: #464: Fall back to the class loader used to load JULI when the thread context class loader is not set. In a normal Tomcat configuration, this will be the system class loader. Based on a pull request by jackshirazi. (markt)
- Fix: #469: Include the Jakarata Annotations API in the classes that Tomcat will not load from web applications. Pull request provided by ppkarwasz. (markt)
- Fix:
Fix a potential
StringIndexOutOfBoundsExceptionexception when generating a WebDAV multi-status response after an error during a copy or delete. Report the paths relative to the server root for any resources with an error. (markt) - Fix: Improve the format of WebDAV XML responses to make them easier for humans to read. The change ensures that there is always a line break before starting a new element. (markt)
- Fix:
Improve validation of the
Destinationheader for WebDAVMOVEandCOPYrequests. (markt)
Coyote
- Fix:
Correct a regression in the fix for 65454 that meant that
minSpareThreadsandmaxThreadssettings were ignored when the Connector used an internal executor. (markt) - Fix: 65776: Improve the detection of the Linux duplicate accept bug and reduce (hopefully avoid) instances of false positives. (markt)
- Fix: 65848: Revert the change that attempted to align the behaviour of client certificate authentication with NIO or NIO2 with OpenSSL for TLS between MacOS and Linux/Windows as the root cause was traced to configuration differences. (markt)
- Fix: #467: When system time moves backwards (e.g. after clock correction), ensure that the cached formatted current date used for HTTP headers tracks this change. Pull request provided by zhenguoli. (markt)
Jasper
Web applications
- Fix: Remove the applet example from the example web application as applets are no longer supported in any major browser. (markt)
- Code: Refactor a small number of pages in the examples web application to avoid an issue with reproducible builds due to differences in file ordering across different operating systems with Ant's zip task. (markt)
- Fix:
Better documentation for the
protocolattribute of theJNDIRealm. (markt) - Fix: Clarify the settings described in the documentation web application to configure a cluster using static membership. (markt)
- Add:
Add information on the
OpenSSLConfandOpenSSLConfCmdelements to the HTTP SSL configuration page in the documentation web applications. (markt)
jdbc-pool
- Code: Use LF line endings for text files in JARs to support reproducible builds across different operating systems. (markt)
Other
- Code: Use LF line endings for text files in JARs to support reproducible builds across different operating systems. (markt)
- Fix: Fix dependencies for individual test targets in Ant build file. Based on #468 provided by Totoo chenyonghui. (markt)
- Update: Update the OWB module to Apache OpenWebBeans 2.0.26. (remm)
- Fix:
Revert the cherry-pick of JavaDoc fix from DBCP applied in 10.1.0.M9
that broke the
DataSourceMXBeanby using a type that isn't supported by MXBeans. (markt) - Add: Improvements to Chinese translations contributed by cloudgyb, totoo and Chenyonghui1028. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to German translations contributed by Andreas Abraham. (markt)
- Add: Improvements to Japanese translations contributed by tak7iji and Shirayuking. (markt)
- Add: Improvements to Korean translations. (woonsan)
- Add: Improvements to Spanish translations contributed by ceciliabarudi. (markt)
2022年01月20日 Tomcat 10.1.0-M10 (markt)
Coyote
- Fix: Correct a regression in the fix for 65785 that broke HTTP/2 server push. (markt)
not released Tomcat 10.1.0-M9 (markt)
Catalina
- Fix:
Add missing check in
SessionCookieConfig.setAttribute()to ensure that the method fails if called after the web application has started. (markt) - Fix:
Add additional locking to
DataSourceUserDatabaseto provide improved protection for concurrent modifications. (markt) - Fix: Add recycling check in the input and output stream isReady to try to give a more informative ISE when the facade has been recycled. (remm)
- Fix: Make the calculation of the session storage location more robust when using file based persistent storage. (markt)
Coyote
- Fix:
65726: Implement support for HTTP/1.1 upgrade when the
request includes a body. The maximum permitted size of the body is
controlled by
maxSavePostSize. (markt) - Fix:
Restore pre-starting of
minSpareThreadslost in the fix for 65454. (markt) - Fix: Revert the previous fix for 65714 and implement a more comprehensive fix. (markt)
- Fix: Allow freeing up context on JVM shutdown in the OpenSSL Panama module by properly using a shared scope. (remm)
- Fix: 65757: Missing initial IO listener notification on Servlet container dispatch to another container thread. (remm)
- Fix: Expand the fix for 65757 so that rather than just checking if processing is happening on a container thread, the check is now if processing is happening on the container thread currently allocated to this request/response. (markt)
- Fix: Improve the fix for RST frame ordering added in 10.1.0-M8 to avoid a potential deadlock on some systems in non-default configurations. (markt)
- Add: 65767: Add support for certificates that use keys encrypted using PBES2. Based on a pull request provided by xiezhaokun. (markt)
- Code: Refactor testing whether a String is a valid HTTP token. (markt)
- Fix: 65785: Perform additional validation of HTTP headers when using HTTP/2. (markt)
- Fix: When a Connector or Endpoint is paused, ensure that only new connections and new requests on existing connections are stopped while allowing in progress requests to run to completion. (markt)
- Fix: Explicitly release ByteBuffer instances associated with pooled channels when stopping the NioEndpoint and Nio2Endpoint. (markt)
- Fix: Narrow the scope of the logging of invalid cookie headers to just the invalid cookie rather than the whole cookie header. (markt)
Jasper
- Fix:
65724: Fix missing messages for some
PropertyNotWritableExceptions caused by a typo in the name used for a resource string. (markt) - Add:
Add support for specifying Java 18 (with the value
18) as the compiler source and/or compiler target for JSP compilation. If used with an Eclipse JDT compiler version that does not support these values, a warning will be logged and the default will used. (markt) - Update: To align with the JSP 3.1 specification that requires Java 11 as a minimum, make the default JSP source version and target version Java 11. (markt)
WebSocket
- Fix:
Remove the
ALLOW_UNSUPPORTED_EXTENSIONSsystem property. As per RFC 6455, all extensions are optional. If an endpoint declares an extension that isn't supported there is no need to trigger an error. The extension can just be excluded from the result of the negotiation. (markt) - Fix:
Remove the
DISABLE_BUILTIN_EXTENSIONS. It was added to enable Tomcat to pass the WebSocket TCK but after updates to the TCK, it is no longer required. (markt) - Add: Add support for POJO WebSocket endpoints to the programmatic upgrade that allows applications to opt to upgrade an HTTP connection to WebSocket. (markt)
- Add: Add support for the WebSocket 2.1 client-side API for configuring TLS connection for wss client connections. (markt)
- Fix: 65763: Improve handling of WebSocket connection close if a message write times out before the message is fully written. (markt)
Other
- Update: Update the OWB module to Apache OpenWebBeans 2.0.25. (remm)
- Update: Update the CXF module to Apache CXF 3.5.0. (remm)
- Add: Improvements to Chinese translations contributed by zhnnn. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations contributed by Shirayuking, yoshy and tak7iji. (markt)
- Add: Improvements to Korean translations. (woonsan)
- Add: Improvements to Spanish translations contributed by Israel. (markt)
- Update: Update SpotBugs to 4.5.2. (markt)
- Update: Update to the Eclipse JDT compiler 4.22. (markt)
- Update: Update the NSIS installer to 3.08. (markt)
- Update: Update UnboundID to 6.0.3. (markt)
- Update: Update CheckStyle to 9.2.1. (markt)
- Update: Update BND to 6.1.0. (markt)
- Update: Update OSGI annotations to 1.1.1. (markt)
2021年12月08日 Tomcat 10.1.0-M8 (markt)
Catalina
- Update: Log warning if a listener is not nested inside a Server element although it must have been. (michaelo)
- Fix:
Where the getter can be called safely, remove the checks for
ServletContextgetters called from acontextInitialized()method of aServletContextListenerthat was not defined in aweb.xmlfile, aweb-fragment.xmlfile nor annotated withWebListener. (markt) - Fix: Make SPNEGO authentication more robust for the case where the provided credential has expired. (markt)
- Fix: Limit cookie support to RFC 6265 to align with recent updates to the Servlet specification. (markt)
- Fix:
65684: Fix a potential
NullPointerExceptionwhen using JULI. (markt) - Docs:
Document conditions under which the
AprLifecycleListenercan be used to avoid JVM crashes. (michaelo) - Fix:
Refactor the
AsyncFileHandlerto reduce the possibility of log messages being lost on shutdown. (markt) - Update:
Refactor the
AsyncFileHandlerto remove the need for theorg.apache.juli.AsyncLoggerPollInterval. If set, this property now has no effect. (markt) - Add:
Add debug logging to the
RestCsrfPreventionFilter. Based on pull request #452 by Polina Georgieva. (markt)
Coyote
- Add: Use implicit scopes in the OpenSSL Panama module to tie the cleanup of OpenSSL memory to the Java GC. (remm)
- Add: Provide protection against a known OS bug that causes the acceptor to report an incoming connection more than once. (markt)
- Fix: Avoid unnecessary duplicate read registrations for blocking I/O with the NIO connector. (markt)
- Fix: 65677: Improve exception handling for errors during HTTP/1.1 reads with NIO2. (markt)
- Fix:
When an error occurs that triggers a stream reset, ensure that the first
RSTframe sent to the client is the one associated with the error that triggered the reset. (markt) - Fix: 65714: Fix exceptions when the security manager is enabled and the first request received after starting is an HTTP request to a TLS enabled NIO2 connector. (markt)
- Add: Ensure that using NIO or NIO2 with OpenSSL for TLS behaves the same way on MacOS as it does on Linux and Windows when no trusted certificate authorities are configured and reject all client certificates. (markt)
- Fix: Avoid a potential deadlock during the concurrent processing of incoming HTTP/2 frames for a stream and that stream being reset. (markt)
WebSocket
- Add: Update the WebSocket API packaging to remove the copy of the client API from the server API and replace it with a dependency on the client API. This aligns Tomcat with changes in the WebSocket 2.1 specification. (markt)
2021年11月15日 Tomcat 10.1.0-M7 (markt)
Catalina
- Code:
Refactor
HttpServletso the defaultdoHead()implementation now callsdoGet()and relies on the container to ensure that the response body is not sent. The previous behaviour (wrapping the response) may be enabled per Servlet by setting thejakarta.servlet.http.legacyDoHeadServlet initialisation parameter totrue. This aligns Tomcat with recent changes updates for Servlet 6.0 in the Jakarta Servlet specification project. (markt) - Add: Add support for setting generic attributes for session cookies. This aligns Apache Tomcat with recent changes in the Jakarta Servlet specification project. (markt)
- Fix:
Do not add a trailing
/to a request URI during canonicalization. (markt) - Fix: Invalid byte sequences (typically in %nn form) in a request URi that are not valid for the given URI encoding now trigger a 400 response. (markt)
- Fix:
Ensure that a request URI starts with a
/. (markt) - Add:
Add a new Connector option,
rejectSuspiciousURIsthat will causes 'suspicious' (see the Servlet 6.0 specification) URIs to be rejected with a 400 response. (markt) - Fix: Improve robustness of JNDIRealm for exceptions occurring when getting the connection. Also add missing close when running into issues getting the passord of a user. (remm)
- Docs:
Add Javadoc comment which listeners must be nested within
Serverelements only. (michaelo) - Add: Add support for custom caching strategies for web application resources. This initial implementation allows control over whether or not a resource is cached. (markt)
Coyote
- Code: Improve performance of Connector shutdown - primarily to reduce the time it takes to run the test suite. (markt)
- Add:
#457: Add a
toString()method toMimeHeaderto aid debugging. (dblevins) - Add:
Add experimental OpenSSL support through the Panama API incubating in
Java 17, with support for OpenSSL 1.1+. This no longer requires
tomcat-native or APR. Please refer to the
openssl-java17module for more details. (remm)
Jasper
- Update: Regenerate the EL parser using JavaCC 7.0.10. (markt)
- Fix: Fix a bug that prevented the EL parser correctly parsing a literal Map that used variables rather than literals for both keys and values. (markt)
- Update:
Ensure that the
getType()method of anyELResolverimplementation returnsnullif either theELResolveror the resolved property is read-only to align Tomcat with recent updates in the Jakarta EL specification project. (markt) - Fix:
Implement an alternative solution to support the JSP page directive
attribute
isThreadSafenow that theSingleThreadModelinterface has been removed from the Servlet API. The new approach synchronizes theservice()method.
WebSocket
- Update:
Add a new method
ServerEndpointConfig.Configurator.getContainerDefaultConfigurator()to align with recent updates in the WebSocket specification project. (markt) - Update:
Add a new method
ServerContainer.upgradeHttpToWebSocket()to align with recent updates in the WebSocket specification project. (markt)
Tribes
- Fix:
#454: Differentiate warning messages in
KubernetesMembershipProviderso that the missing attribute is clear to the user. PR provided by Hal Deadman. (markt)
Other
- Fix: Switch from Cobertura to JaCoCo for code coverage as Cobertura does not support code coverage for code compiled for Java 11 onwards. It also removes the need to use a single thread to run the tests. (markt)
2021年10月01日 Tomcat 10.1.0-M6 (markt)
Catalina
- Fix:
Provide the DataSource in the constructor of
DataSourceUserDatabase, since it is always global. (remm) - Fix:
Fix delete then create object manipulations with
DataSourceUserDatabase. (remm) - Update: Remove all deprecated code from the Servlet API to align Tomcat with recent changes in the Jakarta Servlet specification project. (markt)
- Add: Add the currently available Jakarta EE 10 schemas from the Jakarta EE schema project. (markt)
- Add: Implement the new connection ID and request ID API for Servlet 6.0. (markt)
- Fix: 65553: Implement a work-around for a JRE bug that can trigger a memory leak when using the JNDI realm. (markt)
- Fix:
65586: Fix the bloom filter used to improve performance of
archive file look ups in the web resources implementation so it works
correctly for directory lookups whether or not the provided directory
name includes the trailing
/. (markt) - Fix: #451: Improve the usefulness of the thread name cache used in JULI. Pull request provided by t-gergely. (markt)
Coyote
- Fix:
65563: Correct parsing of HTTP
Content-Rangeheaders. Tomcat was incorrectly requiring an=character afterbytes. Fix based on pull request #449 by Thierry Guérin. (markt) - Fix:
Correct a potential
StackOverflowExceptionwith HTTP/2 and sendfile. (markt) - Fix: Further improvements in the management of the connection flow control window. This addresses various bugs that caused streams to incorrectly report that they had timed out waiting for an allocation from the connection flow control window. (markt)
- Fix:
65577: Fix a
AccessControlExceptionreporting when running an NIO2 connector with TLS enabled. (markt) - Update: Reclassify TLS ciphers that use AESCCM8 as medium security rather than high security to align with recent changes in OpenSSL. (markt)
- Fix: Fix an issue that caused some Servlet non-blocking API reads of the HTTP request body to incorrectly use blocking IO. (markt)
Jasper
- Code:
Deprecate
ELResolver.getFeatureDescriptorsto align Tomcat with recent updates in the Jakarta EL specification project. (markt) - Add:
Add support for default methods to
BeanRELResolverto align Tomcat with recent updates in the Jakarta EL specification project. (markt) - Add:
Add support for
MethodReferenceand the associated getter onMethodExpressionto align Tomcat with recent updates in the Jakarta EL specification project. (markt) - Add:
Refactor
ScopedAttributeELResolverto separate out the functionality that is unrelated to scoped attributes into two new resolvers:ImportELResolverandNotFoundELResolver. This aligns Tomcat with recent updates to the Jakarta Server Pages specification. (markt) - Fix:
Fix the implementation of
MethodExpression.getMethodInfo()so that it returns the expected value rather than failing when the method expression is defined with the parameter values in the expression rather than the types being passed explicitly toExpressionFactory.createMethodExpression(). (markt) - Add:
Add support for a new page/tag directive
errorOnELNotFoundthat can be used to trigger an identifier if an EL expression in a page/tag contains an identifier that cannot be resolved. (markt)
WebSocket
- Fix:
The internal upgrade handler should close the associated
WebConnectionon destroy. (remm)
Web applications
- Update: Update the web applications that are included with Apache Tomcat to use the Jakarta EE 10 schema for web.xml. (markt)
- Fix: Clarify the JASPIC configuration options in the documentation web application. (markt)
Other
- Fix:
65585: Update obsolete comments at the start of the
build.properties.defaultfile. (markt)
2021年09月10日 Tomcat 10.1.0-M5 (markt)
Catalina
- Fix:
Enable Tomcat to start if an (old) XML parser is configured that does
not support
allow-java-encodings. A warning will be logged if such an XML parser is detected. (markt) - Fix: Change the behaviour of custom error pages. If an error occurs after the response is committed, once the custom error page content has been added to the response the connection is now closed immediately rather than closed cleanly. i.e. the last chunk that marks the end of the response body is no longer sent. This acts as an additional signal to the client that the request experienced an error. (markt)
- Fix:
65479: When handling requests using JASPIC authentication,
ensure that
PasswordValidationCallback.getResult()returns the result of the password validation rather than always returningfalse. Fixed via pull request #438 provided by Robert Rodewald. (markt) - Update:
Improve the reusability of the
UserDatabaseby adding intermediate concrete implementation classes and allowing to do partial database updates onsave. (remm) - Code: Refactor the authenticators to delegate the check for preemptive authentication to the individual authenticators where an authentication scheme specific check can be performed. Based on pull request #444 by Robert Rodewald. (markt)
- Add:
Add a
UserDatabaseimplementation as a superset of theDataSourceRealmfunctionality. (remm) - Fix:
Make sure the dynamic Principal returned by
UserDatabaseRealmstays up to date with the database contents, and add an option to have it be static, similar to the other realms. (remm) - Add:
Add
derby-*.jarto the list of JARs to skip when scanning for TLDs, web fragments and annotations. (markt) - Fix: #447. Correct JPMS metadata for catalina.jar. Pull request provided by Hui Wang. (markt)
Coyote
- Fix:
Correct a logic error that meant setting
certificateKeystoreFiletoNONEdid not have the expected effect.NONEwas incorrectly treated as a file path. Patch provided by Mikael Sterner. (markt) - Code: Remove the deprecated APR/Native connector which includes the HTTP APR and the AJP APR connector. Also remove the Java interfaces to the APR/Native library that are not used by the OpenSSL integration for the NIO and NIO2 connectors. (markt)
- Code:
Refactor the JSSE/OpenSSL integration to avoid the use of
finalize(). (markt) - Fix: 65505: When an HTTP header value is removed, ensure that the order of the remaining header values is unchanged. (markt)
WebSocket
- Fix: 65506: Fix write timeout check that was using the read timeout value. Patch submitted by Gustavo Mahlow. (remm)
Web applications
- Fix: Remove unnecessary Context settings from the examples web application. (markt)
- Fix:
Document default value for
unpackWARsand related clean-up. Pull request #439 provided by Robert Rodewald. (markt) - Fix:
Clarify the documentation of the
compressionMinSizeandcompressibleMimeTypeHTTPConnectorattributes. Pull request #442 provided by crisgeek. (markt)
Tribes
- Code:
Refactor the
ParallelNioSenderto avoid the use offinalize(). (markt)
Other
- Fix: Fix failing build when building on non-English locales. Pull request #441 provided by Dachuan J. (markt)
- Update: Update to JSign version 4.0 to enable code signing without the need for the installation of additional client tools. (markt)
- Update: Add Apache Derby 10.15.2.0 to the testsuite dependencies, for JDBC and DataSource testing. (remm)
- Add: Update the internal fork of Apache Commons BCEL to 40d5eb4 (2021年09月01日, 6.6.0-SNAPSHOT). Code clean-up only. (markt)
- Add: Update the internal fork of Apache Commons Codec to fd44e6b (2021年09月01日, 1.16-SNAPSHOT). Minor refactoring. (markt)
- Add:
65661: Update the internal fork of Apache Commons FileUpload
to 33d2d79 (2021年09月01日, 2.0-SNAPSHOT). Refactoring and code clean-up. As
a result of Commons File Upload now using
java.nio.file.Files, 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. (markt) - Add: Update the internal fork of Apache Commons Pool to 2.11.1 (2021年08月17日). Improvements, code clean-up and refactoring. (markt)
- Add: Update the internal fork of Apache Commons DBCP to 2.9.0 (2021年08月03日). Improvements, code clean-up and refactoring. (markt)
- Update: Update the packaged version of the Tomcat Native Library to 1.2.31 to pick up Windows binaries built with OpenSSL 1.1.1l.(markt)
- Update: Switch to the CDN as the primary download location for ASF dependencies. (markt)
- Add: Improvements to Chinese translations contributed by syseal, wolibo, ZhangJieWen and DigitalFatCat. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations contributed by tak7iji. (markt)
- Add: Improvements to Korean translations. (woonsan)
2021年08月06日 Tomcat 10.1.0-M4 (markt)
WebSocket
- Fix: Correct a regression in the Java 8 to Java 11 changes made in 10.1.0-M3 that caused all WebSocket end points to fail to register. (markt)
not released Tomcat 10.1.0-M3 (markt)
General
- Update: Update the minimum required Java version to Java 11. (markt)
Catalina
- Code: Incremented the supported Jakarta Servlet version to 6.0 to align with the current development branch of the Jakarta Servlet specification. Plans have changed and the next iteration of the Servlet specification will be 6.0 rather than 5.1. (markt)
- Fix:
65411: Always close the connection when an uncaught
NamingExceptionoccurs to avoid connection locking. Submitted by Ole Ostergaard. (remm) - Fix:
65433: Correct a regression in the fix for 65397
where a
StringIndexOutOfBoundsExceptioncould be triggered if the canonical path of the target of a symlink was shorter than the canonical path of the directory in which the symlink had been created. Patch provided by Cedomir Igaly. (markt) - Add:
65443: Refactor the
CorsFilterto make it easier to extend. (markt) - Fix:
To avoid unnecessary cache revalidation, do not add an HTTP
Expiresheader when setting adding an HTTP header ofCacheControl: private. (markt) - Code:
Refactor JULI's custom
LogManager, the web application class loader implementation, the web resources implementation, theJreLeakPreventionListenerimplementation and theStandardJarScannerimplementation to remove Java 8 specific code now that the minimum Java version has been increased to 11. (markt) - Code: Remove all references to the endorsed standards override feature and the specifying of optional packages (extensions) in the manifest as these are not supported in Java 11. (markt)
Coyote
- Fix:
When writing an HTTP/2 response via sendfile (only enabled when
useAsyncIOis true) the connection flow control window was sometimes ignored leading to various error conditions. sendfile now checks both the stream and connection flow control windows before writing. (markt) - Add: Add debug logging for writing an HTTP/2 response via sendfile. (markt)
- Fix: Correct bugs in the HTTP/2 connection flow control management that meant it was possible for a connection to stall waiting for a connection flow control window update that had already arrived. Any streams on that connection that were trying to write when this happened would time out. (markt)
- Fix: 65448: When using TLS with NIO, it was possible for a blocking response write to hang just before the final TLS packet associated with the response until the connection timed out at which point the final packet would be sent and the connection closed. (markt)
- Fix: 65454: Fix a race condition that could result in a delay to a new request. The new request could be queued to wait for an existing request to finish processing rather than the thread pool creating a new thread to process the new request. (markt)
- Fix: 65460: Correct a regression introduced in the previous release in the change to reduce the number of small HTTP/2 window updates sent for streams. A logic error meant that small window updates for the connection were dropped. This meant that the connection flow window slowly reduced over time until nothing could be sent. (markt)
- Fix: Remove NIO workarounds and code that is no longer needed with Java 11. (remm)
- Code: Refactor the endpoints to remove Java 8 specific code now that the minimum Java version has been increased to 11. (markt)
Jasper
- Code: Add additional generics to the EL API to align with the latest changes in the EL specification project. (markt)
- Add: Enable EL lambda expressions to be coerced to functional interfaces. This is an implementation of a proposed extension to the Jakarta Expression Language specification. (markt)
- Code: Refactor the EL API and implementation to remove Java 8 specific code now that the minimum Java version has been increased to 11. (markt)
WebSocket
- Code: Refactor the WebSocket implementation to remove Java 8 specific code now that the minimum Java version has been increased to 11. (markt)
Web applications
Other
- Add: Improvements to Chinese translations contributed by ZhangJieWen and chengzheyan. (markt)
- Add: Improvements to French translations. (remm)
- Add: Improvements to Japanese translations contributed by tak7iji. (markt)
- Add: Improvements to Korean translations. (woonsan)
- Fix:
Use of GraalVM native images no longer automatically disables JMX
support. JMX support may still be disabled by calling
org.apache.tomcat.util.modeler.Registry.disableRegistry(). (markt)
2021年07月02日 Tomcat 10.1.0-M2 (markt)
Catalina
- Code:
Refactor the
RemoteIpValveto use the common utility method for list to comma separated string conversion. (markt) - Code:
Refactor
JNDIRealm$JNDIConnectionso its fields are accessible to sub-classes ofJNDIRealm. (markt) - Fix:
Fix serialization warnings in
UserDatabasePrincipalreported by SpotBugs. (markt) - Fix:
65397: Calls to
ServletContext.getResourcePaths()no longer include symbolic links in the results unlessallowLinkinghas been set totrue. If a resource is skipped because of this change, a warning will be logged as this typically indicates a configuration issue. (markt)
Coyote
- Fix: 65368: Improve handling of clean closes of inbound TLS connections. Treat them the same way as clean closes of non-TLS connections rather than as unknown errors. (markt)
- Fix:
Modify the HTTP/2 connector not to sent small updates for stream flow
control windows to the user agent as, depending on how the user agent is
written, this may trigger small writes from the user agent that in turn
trigger the overhead protection. Small updates for stream flow control
windows are now combined with subsequent flow control window updates for
that stream to ensure that all stream flow control window updates sent
from Tomcat are larger than
overheadWindowUpdateThreshold. (markt) - Add: Add additional debug logging to track the current state of the HTTP/2 overhead count that Tomcat uses to detect and close potentially malicious connections. (markt)
- Update: Many HTTP/2 requests from browsers will trigger one overhead frame and one non-overhead frame. Change the overhead calculation so that a non-overhead frame reduces the current overhead count by 2 rather than 1. This means that, over time, the overhead count for a well-behaved connection will trend downwards. (markt)
- Update:
Change the initial HTTP/2 overhead count from
-10to-10 * overheadCountFactor. This means that, regardless of the value chosen foroverheadCountFactor, when a connection opens 10 overhead frames in a row will be required to trigger the overhead protection. (markt) - Update:
Increase the default
overheadCountFactorfrom1to10and change the reduction in overhead count for a non-overhead frame from-2to-20. This allows for a larger range (0-20) to be used foroverheadCountFactorproviding for finer-grained control. (markt) - Fix:
Modify the parsing of HTTP header values that use the
1#tokento ignore empty elements as per RFC 7230 section 7 instead of treating the presence of empty elements as an error. (markt) - Fix:
Expand the unit tests for
HttpServlet.doHead()and correct the flushing of the response buffer. The buffer used to behave as if it was one byte smaller than the configured size. The buffer was flushed (and the response committed if required) when the buffer was full. The buffer is now flushed (and the response committed if required) if the buffer is full and there is more data to write. (markt) - Fix: Fix an issue where concurrent HTTP/2 writes (or concurrent reads) to the same connection could hang and eventually timeout when async IO was enabled (it is enabled by default). (markt)
Jasper
- Fix:
65387: Correct a regression in the fix for 65124
and restore the local definition of
outfor tags that implementTryCatchFinally. (markt) - Fix: 65390: Correct a regression in the fix for 65124 and restore code that was removed in error leading to JSP compilation failures in some circumstances. (markt)
- Update: Update to the Eclipse JDT compiler 4.20. (markt)
- Add:
Add support for specifying Java 17 (with the value
17) as the compiler source and/or compiler target for JSP compilation. If used with an Eclipse JDT compiler version that does not support these values, a warning will be logged and the latest supported version will used. (markt) - Fix:
65377: Update the Java code generation for JSPs not to use
the boxed primitive constructors as they have been deprecated in Java 9
and marked for future removal in Java 16.
valueOf()is now used instead. (markt)
WebSocket
- Code:
Refactor the
DigestAuthenticatorto reuse a sharedSecureRandominstance rather than create a new one to generate thecnonceif required. (markt)
Web applications
- Fix: 65385: Correct the link in the documentation web application the Maven Central repository. (markt)
Other
- Add: Use JSign to integrate the build script with the code signing service to enable release builds to be created on Linux as well as Windows. (markt)
- Update: Update the OWB module to Apache OpenWebBeans 2.0.23. (remm)
- Update: Update the CXF module to Apache CXF 3.4.4. (remm)
- Fix:
65369 / #422: Add the additional
--add-opens=...options required for running Tomcat on Java 16 onwards to theservice.batscript to align it with the other start-up scripts. PR provided by MCMicS. (markt) - Add: Improvements to French translations. (remm)
- Add: Improvements to Korean translations. (woonsan)
- Update: Update JUnit to version 4.13.2. (markt)
- Update: Update EasyMock to 4.3. (markt)
- Update: Update Objenesis to 3.2. (markt)
- Update: Update UnboundID to 6.0.0. (markt)
- Update: Update CheckStyle to 8.43. (markt)
- Update: Update SpotBugs to 4.2.3. (markt)
- Update: Update OSGi annotations to 1.1.0. (markt)
2021年06月15日 Tomcat 10.1.0-M1 (markt)
General
- Code: This release contains all of the changes up to and including those in Apache Tomcat 10.0.6 plus the additional changes listed below. (markt)
- Code: Remove code previously marked for removal in Tomcat 10.1.x. (markt)
Catalina
- Code: Incremented the supported Jakarta Servlet version to 5.1 to align with the current development branch of the Jakarta Servlet specification. (markt)
- Fix:
65301:
RemoteIpValvewill now avoid getting the local host name when it is not needed. (remm) - Fix:
65308: NPE in JNDIRealm when no
userRoleAttributeis given. (fschumacher) - Add:
#412: Add commented out, sample users for the Tomcat Manager app
to the default
tomcat-users.xmlfile. Based on a PR by Arnaud Dagnelies. (markt) - Add:
#418: Add a new option,
pass-through, to the default servlet'suseBomIfPresentinitialization parameter that causes the default servlet to leave any BOM in place when processing a static file and not to use the BOM to determine the encoding of the file. Based on a pull request by Jean-Louis Monteiro. (markt) - Fix:
#419: When processing POST requests of type
multipart/form-datafor parts without a filename that are added to the parameter map in String form, check the size of the part before attempting conversion to String. Pull request provided by tianshuang. (markt) - Add:
Implement the new
CookiemethodssetAttribute(),getAttribute()andgetAttributes()introduced in Servlet 6.0. (markt) - Fix: AprLifecycleListener does not show dev version suffix for libtcnative and libapr. (michaelo)
- Update:
Refactor principal handling in
UserDatabaseRealmusing an inner class that extendsGenericPrincipal. (remm) - Fix:
Enable the default
doHead()implementation inHttpServletto correctly handle responses where the content length needs to be represented as a long since it is larger than the maximum value that can be represented by an int. (markt) - Fix:
Avoid synchronization on roles verification for the memory
UserDatabase. (remm) - Fix:
Fix the default
doHead()implementation inHttpServletto correctly handle responses where the Servlet callsServletResponse.reset()and/orServletResponse.resetBuffer(). (markt) - Fix:
Fix the default
doHead()implementation inHttpServletto correctly handle responses generated using the Servlet non-blocking API. (markt)
Coyote
- Fix:
65303: Fix a possible
NullPointerExceptionif an error occurs on an HTTP/1.1 connection being upgraded to HTTP/2 or on a pushed HTTP/2 stream. (markt) - Update: Simplify AprEndpoint socket bind for all platforms. (michaelo)
- Fix:
65340: Add missing check for a negative return value for
Hpack.decodeIntegerin theHpackDecoder, which could cause aNegativeArraySizeExceptionexception. Submitted by Thomas, and verified the fix is present in the donated hpack code in a further update. (remm) - Add: Add debug logging for HTTP/2 HPACK header decoding. (markt)
- Fix: Correct parsing of HTTP headers consisting of a list of tokens so that a header with an empty token is treated consistently regardless of whether the empty token is at the start, middle or end of the list of tokens. (markt)
- Fix:
Remove support for the
identitytransfer encoding. The inclusion of this encoding in RFC 2616 was an error that was corrected in 2001. Requests using this transfer encoding will now receive a 501 response. (markt) - Fix: Process transfer encoding headers from both HTTP 1.0 and HTTP 1.1 clients. (markt)
- Fix:
Ensure that if the transfer encoding header contains the
chunked, that thechunkedencoding is the final encoding listed. (markt)
Jasper
- Code: Incremented the supported Jakarta Expression Language version to 5.0 to align with the current development branch of the Jakarta Expression Language specification. (markt)
- Code: Review code used to generate Java source from JSPs and tags and remove code found to be unnecessary. (markt)
- Code:
Refactor use of internal
ChildInfoclass to use compile time type checking rather than run time type checking. (markt) - Fix:
65124: Partial fix. When generating Java source code to call
a tag handler, only define the local variable
JspWriter outwhen it is going to be used. (markt) - Code: Add generics to the EL 5.0 API to align with the current EL 5.0 development branch. (markt)
- Update:
Update the
web-fragment.xmlincluded injasper.jarandjasper-el.jarto use the Servlet 5.0 schema. (markt) - Fix:
Update JspC to generate
web.xmlandweb-fragment.xmlfiles using Servlet 5.0 schemas. (markt) - Code:
Remove the deprecated method
MethodExpression.isParmetersProvided()from the EL API to align with the current EL 5.0 development branch. (markt) - Fix: 65358: Improve expression language method matching for methods with varargs. Where multiple methods may match the provided parameters, the method that requires the fewest varargs is preferred. (markt)
- Add:
65332: Add a commented out section in
catalina.policythat provides the necessary permissions to compile JSPs with javac when running on Java 9 onwards with a security manager. It is commented out as it will cause errors if used with earlier Java versions. (markt)
WebSocket
- Fix:
65317: When using
permessage-deflate, the WebSocket connection was incorrectly closed if the uncompressed payload size was an exact multiple of 8192. Based on a patch provided by Saksham Verma. (markt) - Update:
Update the
web-fragment.xmlincluded intomcat-websocket.jarto use the Servlet 5.0 schema. (markt) - Fix: 65342: Correct a regression introduced with the fix for 65262 that meant Tomcat's WebSocket implementation would only work with Tomcat's implementation of the Jakarta WebSocket API. (markt)
Web applications
- Fix:
Improve the description of the
maxConnectionsandacceptCountattributes in the Connector section of the documentation web application. (markt)
Other
- Add: Improvements to French translations. (remm)
- Add: Improvements to Korean translations. (woonsan)
- Fix:
65362: Correct a regression in the previous release. The
change to create OSGi
Require-Capabilitysections in manifests for Jakarta API JARs manually rather than with bnd annotations did not add the necessary manual entries to the embedded JARs. (markt) - Update: Update the packaged version of the Tomcat Native Library to 1.2.30. Also update the minimum recommended version to 1.2.30. (markt)