From 604f3c142f9bd4e4fac13fbe5a7573ed4c34e6c4 Mon Sep 17 00:00:00 2001 From: joinsang Date: Sun, 24 Feb 2019 00:41:25 +0900 Subject: [PATCH] =?utf8?q?=EC=95=95=EC=B6=95=ED=8C=8C=EC=9D=BC=20=EB=8B=A4?= =?utf8?q?=EC=9A=B4=EB=A1=9C=EB=93=9C=20=ED=9B=84=20=EC=84=9C=EB=B2=84?= =?utf8?q?=EC=97=90=20=EC=9E=94=EC=97=AC=ED=8C=8C=EC=9D=BC=20=EC=82=AD?= =?utf8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 한글처리해야함 후ㅜㅜㅜㅠ --- ZipProject/Models/ZipModel.cs | 6 +- .../wwwroot/zip/15509329980/building.html | 278 - .../zip/15509329980/new/balancer-howto.html | 61 - .../zip/15509330470/1/balancer-howto.html | 61 - .../wwwroot/zip/15509330470/1/building.html | 278 - .../wwwroot/zip/15509330470/2/cgi-howto.html | 154 - .../wwwroot/zip/15509330470/3/BUILDING.txt | 561 -- .../wwwroot/zip/15509330470/3/changelog.html | 5916 ----------------- .../zip/15509330470/3/class-loader-howto.html | 291 - .../zip/15509330470/3/cluster-howto.html | 680 -- .../wwwroot/zip/15509330470/3/comments.html | 122 - .../wwwroot/zip/15509330470/connectors.html | 86 - .../building.html" | 278 - .../zip/15509338630/balancer-howto.html | 61 - .../building.html" | 278 - .../zip/15509339270/balancer-howto.html | 61 - .../building.html" | 278 - .../balancer-howto.html" | 61 - 18 files changed, 3 insertions(+), 9508 deletions(-) delete mode 100644 ZipProject/wwwroot/zip/15509329980/building.html delete mode 100644 ZipProject/wwwroot/zip/15509329980/new/balancer-howto.html delete mode 100644 ZipProject/wwwroot/zip/15509330470/1/balancer-howto.html delete mode 100644 ZipProject/wwwroot/zip/15509330470/1/building.html delete mode 100644 ZipProject/wwwroot/zip/15509330470/2/cgi-howto.html delete mode 100644 ZipProject/wwwroot/zip/15509330470/3/BUILDING.txt delete mode 100644 ZipProject/wwwroot/zip/15509330470/3/changelog.html delete mode 100644 ZipProject/wwwroot/zip/15509330470/3/class-loader-howto.html delete mode 100644 ZipProject/wwwroot/zip/15509330470/3/cluster-howto.html delete mode 100644 ZipProject/wwwroot/zip/15509330470/3/comments.html delete mode 100644 ZipProject/wwwroot/zip/15509330470/connectors.html delete mode 100644 "ZipProject/wwwroot/zip/15509338630/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" delete mode 100644 ZipProject/wwwroot/zip/15509338630/balancer-howto.html delete mode 100644 "ZipProject/wwwroot/zip/15509339270/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" delete mode 100644 ZipProject/wwwroot/zip/15509339270/balancer-howto.html delete mode 100644 "ZipProject/wwwroot/zip/15509339460/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" delete mode 100644 "ZipProject/wwwroot/zip/15509339460/2\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/balancer-howto.html" diff --git a/ZipProject/Models/ZipModel.cs b/ZipProject/Models/ZipModel.cs index 6848190..6d388d3 100644 --- a/ZipProject/Models/ZipModel.cs +++ b/ZipProject/Models/ZipModel.cs @@ -33,7 +33,7 @@ namespace ZipProject { path += "/"; Directory.CreateDirectory (path); - for (int i=0; i < dirList.Length; i++){ + for (int i=1; i < dirList.Length; i++){ string dirpath= path+ dirList[i]; exist = Directory.Exists (dirpath); @@ -59,8 +59,8 @@ namespace ZipProject { return path; } - private string RemoveFiles (string dirName) { - return null; + private void RemoveFiles (string path) { + Directory.Delete(path, true); } public MemoryStream MakeZip (JObject keypair, string[] dirList, List files) { diff --git a/ZipProject/wwwroot/zip/15509329980/building.html b/ZipProject/wwwroot/zip/15509329980/building.html deleted file mode 100644 index 2235920..0000000 --- a/ZipProject/wwwroot/zip/15509329980/building.html +++ /dev/null @@ -1,278 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Building Tomcat

Building Tomcat

Table of Contents

Introduction

- -

-Building Apache Tomcat from source is very easy, and is the first step to -contributing to Tomcat. The complete and comprehensive instructions are -provided in the file BUILDING.txt. -The following is a quick step by step guide. -

- -

Download a Java Development Kit (JDK) version 8

- -

-Building Apache Tomcat requires a JDK (version 8) to be installed. You can download one from
-http://www.oracle.com/technetwork/java/javase/downloads/index.html
-http://openjdk.java.net/install/index.html
-or another JDK vendor. -

- -

-IMPORTANT: Set an environment variable JAVA_HOME to the pathname of the -directory into which you installed the JDK release. -

- -

Install Apache Ant 1.9.8 or later

- -

-Download a binary distribution of Ant 1.9.8 or later from -here. -

- -

-Unpack the binary distribution into a convenient location so that the -Ant release resides in its own directory (conventionally named -apache-ant-1.9.x). For the remainder of this guide, -the symbolic name ${ant.home} is used to refer to the full pathname of - the Ant installation directory. -

- -

-IMPORTANT: Create an ANT_HOME environment variable to point the directory ${ant.home}, -and modify the PATH environment variable to include directory -${ant.home}/bin in its list. This makes the ant command line script -available, which will be used to actually perform the build. -

- -

Checkout or obtain the Tomcat source code

- -

- Tomcat SVN repository URL: - https://svn.apache.org/repos/asf/tomcat/trunk/ -

-

- Tomcat source packages: - https://tomcat.apache.org/download-90.cgi. -

- -

- Checkout the source using SVN, selecting a tag for released version or - trunk for the current development code, or download and unpack a - source package. For the remainder of this guide, the symbolic name - ${tomcat.source} is used to refer to the - location where the source has been placed. -

- -

Configure download area

- -

- Building Tomcat involves downloading a number of libraries that it depends on. - It is strongly recommended to configure download area for those libraries. -

- -

- By default the build is configured to download the dependencies into the - ${user.home}/tomcat-build-libs directory. You can change this - (see below) but it must be an absolute path. -

- -

- The build is controlled by creating a - ${tomcat.source}/build.properties file. It can be used to - redefine any property that is present in build.properties.default - and build.xml files. The build.properties file - does not exist by default. You have to create it. -

- -

- The download area is defined by property base.path. For example: -

- -
# ----- Default Base Path for Dependent Packages -----
-# Replace this path with the directory path where
-# dependencies binaries should be downloaded.
-base.path=/home/me/some-place-to-download-to
- -

- Different versions of Tomcat are allowed to share the same download area. -

- -

- Another example: -

- -
base.path=${user.dir}/../libraries-tomcat9.0
- -

- Users who access the Internet through a proxy must use the properties - file to indicate to Ant the proxy configuration: -

- -
# ----- Proxy setup -----
-proxy.host=proxy.domain
-proxy.port=8080
-proxy.use=on
- -

Building Tomcat

- -

-Use the following commands to build Tomcat: -

- -

-cd ${tomcat.source}
-ant -

- -

-Once the build has completed successfully, a usable Tomcat installation will have been -produced in the ${tomcat.source}/output/build directory, and can be started -and stopped with the usual scripts. -

-

Building with Eclipse

- -

-IMPORTANT: This is not a supported means of building Tomcat; this information is -provided without warranty :-). -The only supported means of building Tomcat is with the Ant build described above. -However, some developers like to work on Java code with a Java IDE, -and the following steps have been used by some developers. -

- -

-NOTE: This will not let you build everything under Eclipse; -the build process requires use of Ant for the many stages that aren't -simple Java compilations. -However, it will allow you to view and edit the Java code, -get warnings, reformat code, perform refactorings, run Tomcat -under the IDE, and so on. -

- -

-WARNING: Do not forget to create and configure - ${tomcat.source}/build.properties file as described above - before running any Ant targets. -

- -

-Sample Eclipse project files and launch targets are provided in the -res/ide-support/eclipse directory of the source tree. -The instructions below will automatically copy these into the required locations. -

-

-An Ant target is provided as a convenience to download all binary dependencies, and to create -the Eclipse project and classpath files in the root of the source tree. -

- -

-cd ${tomcat.source}
-ant ide-eclipse -

- -

-Start Eclipse and create a new Workspace. -

- -

-Open the Preferences dialog and then select Java->Build Path->Classpath -Variables to add two new Classpath Variables: -

- - - - - -
TOMCAT_LIBS_BASEThe same location as the base.path - setting in build.properties, where the binary dependencies have been downloaded
ANT_HOMEthe base path of Ant 1.9.8 or later
- - -

-Use File->Import and choose Existing Projects into Workspace. -From there choose the root directory of the Tomcat source tree (${tomcat.source}) -and import the Tomcat project located there. -

- -

-start-tomcat and stop-tomcat launch configurations are provided in -res/ide-support/eclipse and will be available in the Run->Run Configurations -dialog. Use these to start and stop Tomcat from Eclipse. -If you want to configure these yourself (or are using a different IDE) -then use org.apache.catalina.startup.Bootstrap as the main class, -start/stop etc. as program arguments, and specify -Dcatalina.home=... -(with the name of your build directory) as VM arguments. -

- -

-Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat -coding conventions (and have your contributions accepted): -

- - - - - - - - -
Java -> Code Style -> Formatter -> Edit...Tab policy: Spaces only
Tab and Indentation size: 4
General -> Editors -> Text EditorsDisplayed tab width: 2
Insert spaces for tabs
Show whitespace characters (optional)
XML -> XML Files -> EditorIndent using spaces
Indentation size: 2
Ant -> Editor -> FormatterTab size: 2
Use tab character instead of spaces: unchecked
- -

-The recommended configuration of Compiler Warnings is documented in -res/ide-support/eclipse/java-compiler-errors-warnings.txt file. -

- -

Building with other IDEs

-

-The same general approach should work for most IDEs; it has been reported -to work in IntelliJ IDEA, for example. -

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509329980/new/balancer-howto.html b/ZipProject/wwwroot/zip/15509329980/new/balancer-howto.html deleted file mode 100644 index ebef81c..0000000 --- a/ZipProject/wwwroot/zip/15509329980/new/balancer-howto.html +++ /dev/null @@ -1,61 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Load Balancer HOW-TO

Load Balancer HOW-TO

Table of Contents

Using the JK 1.2.x native connector

- -Please refer to the JK 1.2.x documentation. - -

Using Apache HTTP Server 2.x with mod_proxy

- -Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either -HTTP or AJP load balancing. This new version of mod_proxy is also usable with -Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code -from Apache HTTP Server 2.2. - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509330470/1/balancer-howto.html b/ZipProject/wwwroot/zip/15509330470/1/balancer-howto.html deleted file mode 100644 index ebef81c..0000000 --- a/ZipProject/wwwroot/zip/15509330470/1/balancer-howto.html +++ /dev/null @@ -1,61 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Load Balancer HOW-TO

Load Balancer HOW-TO

Table of Contents

Using the JK 1.2.x native connector

- -Please refer to the JK 1.2.x documentation. - -

Using Apache HTTP Server 2.x with mod_proxy

- -Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either -HTTP or AJP load balancing. This new version of mod_proxy is also usable with -Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code -from Apache HTTP Server 2.2. - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509330470/1/building.html b/ZipProject/wwwroot/zip/15509330470/1/building.html deleted file mode 100644 index 2235920..0000000 --- a/ZipProject/wwwroot/zip/15509330470/1/building.html +++ /dev/null @@ -1,278 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Building Tomcat

Building Tomcat

Table of Contents

Introduction

- -

-Building Apache Tomcat from source is very easy, and is the first step to -contributing to Tomcat. The complete and comprehensive instructions are -provided in the file BUILDING.txt. -The following is a quick step by step guide. -

- -

Download a Java Development Kit (JDK) version 8

- -

-Building Apache Tomcat requires a JDK (version 8) to be installed. You can download one from
-http://www.oracle.com/technetwork/java/javase/downloads/index.html
-http://openjdk.java.net/install/index.html
-or another JDK vendor. -

- -

-IMPORTANT: Set an environment variable JAVA_HOME to the pathname of the -directory into which you installed the JDK release. -

- -

Install Apache Ant 1.9.8 or later

- -

-Download a binary distribution of Ant 1.9.8 or later from -here. -

- -

-Unpack the binary distribution into a convenient location so that the -Ant release resides in its own directory (conventionally named -apache-ant-1.9.x). For the remainder of this guide, -the symbolic name ${ant.home} is used to refer to the full pathname of - the Ant installation directory. -

- -

-IMPORTANT: Create an ANT_HOME environment variable to point the directory ${ant.home}, -and modify the PATH environment variable to include directory -${ant.home}/bin in its list. This makes the ant command line script -available, which will be used to actually perform the build. -

- -

Checkout or obtain the Tomcat source code

- -

- Tomcat SVN repository URL: - https://svn.apache.org/repos/asf/tomcat/trunk/ -

-

- Tomcat source packages: - https://tomcat.apache.org/download-90.cgi. -

- -

- Checkout the source using SVN, selecting a tag for released version or - trunk for the current development code, or download and unpack a - source package. For the remainder of this guide, the symbolic name - ${tomcat.source} is used to refer to the - location where the source has been placed. -

- -

Configure download area

- -

- Building Tomcat involves downloading a number of libraries that it depends on. - It is strongly recommended to configure download area for those libraries. -

- -

- By default the build is configured to download the dependencies into the - ${user.home}/tomcat-build-libs directory. You can change this - (see below) but it must be an absolute path. -

- -

- The build is controlled by creating a - ${tomcat.source}/build.properties file. It can be used to - redefine any property that is present in build.properties.default - and build.xml files. The build.properties file - does not exist by default. You have to create it. -

- -

- The download area is defined by property base.path. For example: -

- -
# ----- Default Base Path for Dependent Packages -----
-# Replace this path with the directory path where
-# dependencies binaries should be downloaded.
-base.path=/home/me/some-place-to-download-to
- -

- Different versions of Tomcat are allowed to share the same download area. -

- -

- Another example: -

- -
base.path=${user.dir}/../libraries-tomcat9.0
- -

- Users who access the Internet through a proxy must use the properties - file to indicate to Ant the proxy configuration: -

- -
# ----- Proxy setup -----
-proxy.host=proxy.domain
-proxy.port=8080
-proxy.use=on
- -

Building Tomcat

- -

-Use the following commands to build Tomcat: -

- -

-cd ${tomcat.source}
-ant -

- -

-Once the build has completed successfully, a usable Tomcat installation will have been -produced in the ${tomcat.source}/output/build directory, and can be started -and stopped with the usual scripts. -

-

Building with Eclipse

- -

-IMPORTANT: This is not a supported means of building Tomcat; this information is -provided without warranty :-). -The only supported means of building Tomcat is with the Ant build described above. -However, some developers like to work on Java code with a Java IDE, -and the following steps have been used by some developers. -

- -

-NOTE: This will not let you build everything under Eclipse; -the build process requires use of Ant for the many stages that aren't -simple Java compilations. -However, it will allow you to view and edit the Java code, -get warnings, reformat code, perform refactorings, run Tomcat -under the IDE, and so on. -

- -

-WARNING: Do not forget to create and configure - ${tomcat.source}/build.properties file as described above - before running any Ant targets. -

- -

-Sample Eclipse project files and launch targets are provided in the -res/ide-support/eclipse directory of the source tree. -The instructions below will automatically copy these into the required locations. -

-

-An Ant target is provided as a convenience to download all binary dependencies, and to create -the Eclipse project and classpath files in the root of the source tree. -

- -

-cd ${tomcat.source}
-ant ide-eclipse -

- -

-Start Eclipse and create a new Workspace. -

- -

-Open the Preferences dialog and then select Java->Build Path->Classpath -Variables to add two new Classpath Variables: -

- - - - - -
TOMCAT_LIBS_BASEThe same location as the base.path - setting in build.properties, where the binary dependencies have been downloaded
ANT_HOMEthe base path of Ant 1.9.8 or later
- - -

-Use File->Import and choose Existing Projects into Workspace. -From there choose the root directory of the Tomcat source tree (${tomcat.source}) -and import the Tomcat project located there. -

- -

-start-tomcat and stop-tomcat launch configurations are provided in -res/ide-support/eclipse and will be available in the Run->Run Configurations -dialog. Use these to start and stop Tomcat from Eclipse. -If you want to configure these yourself (or are using a different IDE) -then use org.apache.catalina.startup.Bootstrap as the main class, -start/stop etc. as program arguments, and specify -Dcatalina.home=... -(with the name of your build directory) as VM arguments. -

- -

-Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat -coding conventions (and have your contributions accepted): -

- - - - - - - - -
Java -> Code Style -> Formatter -> Edit...Tab policy: Spaces only
Tab and Indentation size: 4
General -> Editors -> Text EditorsDisplayed tab width: 2
Insert spaces for tabs
Show whitespace characters (optional)
XML -> XML Files -> EditorIndent using spaces
Indentation size: 2
Ant -> Editor -> FormatterTab size: 2
Use tab character instead of spaces: unchecked
- -

-The recommended configuration of Compiler Warnings is documented in -res/ide-support/eclipse/java-compiler-errors-warnings.txt file. -

- -

Building with other IDEs

-

-The same general approach should work for most IDEs; it has been reported -to work in IntelliJ IDEA, for example. -

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509330470/2/cgi-howto.html b/ZipProject/wwwroot/zip/15509330470/2/cgi-howto.html deleted file mode 100644 index 4cf2e98..0000000 --- a/ZipProject/wwwroot/zip/15509330470/2/cgi-howto.html +++ /dev/null @@ -1,154 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - CGI How To

CGI How To

Table of Contents

Introduction

- -

The CGI (Common Gateway Interface) defines a way for a web server to -interact with external content-generating programs, which are often -referred to as CGI programs or CGI scripts. -

- -

Within Tomcat, CGI support can be added when you are using Tomcat as your -HTTP server and require CGI support. Typically this is done -during development when you don't want to run a web server like -Apache httpd. -Tomcat's CGI support is largely compatible with Apache httpd's, -but there are some limitations (e.g., only one cgi-bin directory). -

- -

CGI support is implemented using the servlet class -org.apache.catalina.servlets.CGIServlet. Traditionally, -this servlet is mapped to the URL pattern "/cgi-bin/*".

- -

By default CGI support is disabled in Tomcat.

-

Installation

- -

CAUTION - CGI scripts are used to execute programs -external to the Tomcat JVM. If you are using the Java SecurityManager this -will bypass your security policy configuration in catalina.policy.

- -

To enable CGI support:

- -
    -
  1. There are commented-out sample servlet and servlet-mapping elements for -CGI servlet in the default $CATALINA_BASE/conf/web.xml file. -To enable CGI support in your web application, copy that servlet and -servlet-mapping declarations into WEB-INF/web.xml file of your -web application.

    - -

    Uncommenting the servlet and servlet-mapping in -$CATALINA_BASE/conf/web.xml file enables CGI for all installed -web applications at once.

    -
  2. - -
  3. Set privileged="true" on the Context element for your -web application.

    - -

    Only Contexts which are marked as privileged are allowed to use the -CGI servlet. Note that modifying the global $CATALINA_BASE/conf/context.xml -file affects all web applications. See -Context documentation for details.

    -
  4. -
- -

Configuration

- -

There are several servlet init parameters which can be used to -configure the behaviour of the CGI servlet.

-
    -
  • cgiPathPrefix - The CGI search path will start at -the web application root directory + File.separator + this prefix. -By default there is no value, which results in the web application root -directory being used as the search path. The recommended value is -WEB-INF/cgi
  • -
  • enableCmdLineArguments - Are command line parameters -generated from the query string as per section 4.4 of 3875 RFC? The default is -false.
  • -
  • environment-variable- - An environment to be set for the -execution environment of the CGI script. The name of variable is taken from the -parameter name. To configure an environment variable named FOO, configure a -parameter named environment-variable-FOO. The parameter value is used as the -environment variable value. The default is no environment variables.
  • -
  • executable - The name of the executable to be used to -run the script. You may explicitly set this parameter to be an empty string -if your script is itself executable (e.g. an exe file). Default is -perl.
  • -
  • executable-arg-1, executable-arg-2, -and so on - additional arguments for the executable. These precede the -CGI script name. By default there are no additional arguments.
  • -
  • envHttpHeaders - A regular expression used to select the -HTTP headers passed to the CGI process as environment variables. Note that -headers are converted to upper case before matching and that the entire header -name must match the pattern. Default is -ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|IF-[-0-9A-Z]*|REFERER|USER-AGENT -
  • -
  • parameterEncoding - Name of the parameter encoding -to be used with the CGI servlet. Default is -System.getProperty("file.encoding","UTF-8"). That is the system -default encoding, or UTF-8 if that system property is not available.
  • -
  • passShellEnvironment - Should the shell environment -variables from Tomcat process (if any) be passed to the CGI script? Default is -false.
  • -
  • stderrTimeout - The time (in milliseconds) to wait for -the reading of stderr to complete before terminating the CGI process. Default -is 2000.
  • -
- -

The CGI script executed depends on the configuration of the CGI Servlet and -how the request is mapped to the CGI Servlet. The CGI search path starts at the -web application root directory + File.separator + cgiPathPrefix. The -pathInfo is then searched unless it is null - in -which case the servletPath is searched.

- -

The search starts with the first path segment and expands one path segment -at a time until no path segments are left (resulting in a 404) or a script is -found. Any remaining path segments are passed to the script in the -PATH_INFO environment variable.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509330470/3/BUILDING.txt b/ZipProject/wwwroot/zip/15509330470/3/BUILDING.txt deleted file mode 100644 index 2544cfc..0000000 --- a/ZipProject/wwwroot/zip/15509330470/3/BUILDING.txt +++ /dev/null @@ -1,561 +0,0 @@ -================================================================================ - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -================================================================================ - - ==================================================== - Building The Apache Tomcat 9.0 Servlet/JSP Container - ==================================================== - -This subproject contains the source code for Tomcat 9.0, a container that -implements the Servlet 4.0, JSP 2.3, EL 3.0, WebSocket 1.1 and JASPIC 1.1 -specifications from the Java Community Process . - -Note: If you just need to run Apache Tomcat, it is not necessary to build -it. You may simply download a binary distribution. It is cross-platform. -Read RUNNING.txt for the instruction on how to run it. - -In order to build a binary distribution version of Apache Tomcat from a -source distribution, do the following: - - -(1) Download and Install a Java Development Kit - - 1. If the JDK is already installed, skip to (2). - - 2. Download a version 8 of Java Development Kit (JDK) release (use the - latest update available for your chosen version) from one of: - - http://www.oracle.com/technetwork/java/javase/downloads/index.html - http://openjdk.java.net/install/index.html - or another JDK vendor. - - Note regarding later versions of Java: - - As documented elsewhere, one of components in Apache Tomcat includes - a private copy of the Apache Commons DBCP library. - - The JDBC interfaces implemented by DBCP frequently change in non-backwards - compatible ways between versions of the Java SE specification. Therefore, - it is likely that DBCP will only compile with the specific version of Java - listed above and that compilation will fail if a later version of Java is - used. - - See Apache Commons DBCP project web site for more details on - available versions of the library and its requirements, - - https://commons.apache.org/dbcp/ - - 3. Install the JDK according to the instructions included with the release. - - 4. Set an environment variable JAVA_HOME to the pathname of the directory - into which you installed the JDK release. - - -(2) Install Apache Ant version 1.9.8 or later on your computer. - - 1. If Apache Ant version 1.9.8 or later is already installed on your - computer, skip to (3). - - 2. Download a binary distribution of Ant from: - - https://ant.apache.org/bindownload.cgi - - 3. Unpack the binary distribution into a convenient location so that the - Ant release resides in its own directory (conventionally named - "apache-ant-[version]"). - - For the purposes of the remainder of this document, the symbolic name - "${ant.home}" is used to refer to the full pathname of the release - directory. - - 4. Create an ANT_HOME environment variable to point the directory - ${ant.home}. - - 5. Modify the PATH environment variable to include the directory - ${ant.home}/bin in its list. This makes the "ant" command line script - available, which will be used to actually perform the build. - - -(3) Building Tomcat 9.0 - -(3.1) Checkout or obtain the source code for Tomcat 9.0 - -Checkout the source using SVN, selecting a tag for released version or -trunk for the current development code, or download and unpack a source -package. - - * Tomcat SVN repository URL: - - https://svn.apache.org/repos/asf/tomcat/tc9.0.x/trunk/ - - * Source packages can be downloaded from: - - https://tomcat.apache.org/download-90.cgi - -The location where the source has been placed will be further referred as -${tomcat.source}. - -The Tomcat local build process does not modify line-endings. The svn repository -is configured so that all files will be checked out with the line-ending -appropriate for the current platform. When using a source package you should -ensure that you use the source package that has the appropriate line-ending -for your platform: - - zip -> CRLF - tar.gz -> LF - -Note that the release build process does modify line-endings to ensure that -each release package has the appropriate line-endings. - -(3.2) Building - - 1. The build is controlled by creating a ${tomcat.source}/build.properties - file. - - It is recommended to always create the file, because of unfortunate - default value of base.path property. You may start with the following - content for the file: - - # ----- Default Base Path for Dependent Packages ----- - # Replace this path with the directory path where dependencies binaries - # should be downloaded - base.path=/home/me/some-place-to-download-to - - 2. Configure base.path property by adding it to the - ${tomcat.source}/build.properties file. - - The base.path property specifies the place where Tomcat dependencies - required by the build are downloaded. It is recommended to place this - directory outside of the source tree, so that you do not waste your - time re-downloading the libraries. - -* NOTE: The default value of the base.path property configures the build script - to download the libraries required to build Tomcat to the - ${user.home}/tomcat-build-libs directory. - -* NOTE: Users accessing the Internet through a proxy must use the properties - file to indicate to Ant the proxy configuration. - - The following properties should be added to the ${tomcat.source}/build.properties - file. - - proxy.use=true - proxy.host=proxy.domain - proxy.port=8080 - proxy.user=username - proxy.password=password - - See Apache Ant documentation for the task for details. - - 3. Go to the sources directory and run Ant: - - cd ${tomcat.source} - ant - - This will execute the "deploy" target in build.xml. - - Once the build has completed successfully, a usable Tomcat installation - will have been produced in the ${tomcat.source}/output/build directory, - and can be started and stopped with the usual scripts. - - Note that the build includes Tomcat documentation, which can be found - in the output/build/webapps/docs directory. - - The path of the output directory can be controlled by specifying the - "tomcat.output" property in the build.properties file. - -* NOTE: Do not run the build as the root user. Building and running Tomcat - does not require root privileges. - - -(4) Updating sources and rebuilding - -It is recommended that you regularly update the downloaded Tomcat 9.0 -sources using your SVN client. - -For a quick rebuild of only modified code you can use: - - cd ${tomcat.source} - ant - - -(5) Special builds - -There are several targets in Tomcat build files that are useful to be -called separately. They build components that you may want to build -quickly, or ones that are included in the full release and are not built -during the default "deploy" build. - -(5.1) Building documentation - -The documentation web application is built during the default "deploy" -build. - -It can be built quickly by using the following commands: - - cd ${tomcat.source} - ant build-docs - -The output of this command will be found in the following directory: - - output/build/webapps/docs - - -The API documentation (Javadoc) is built during a "release" build. It is -easy to build it separately by using the following commands: - - cd ${tomcat.source} - ant javadoc - -The output of this command will be found in the following directories: - - output/dist/webapps/docs/api - output/dist/webapps/docs/elapi - output/dist/webapps/docs/jspapi - output/dist/webapps/docs/servletapi - - -(5.2) Building the extras (commons-logging, webservices etc.) - -These components are documented on the "Additional Components" -(extras.html) page of documentation. They are built during a "release" -build. - -You can build them by using the following commands: - - cd ${tomcat.source} - ant extras - -(5.3) Building the embedded packages - -These are built during a "release" build. - -You can build them by using the following commands: - - cd ${tomcat.source} - ant embed - - -(6) Building a full release (as provided via the ASF download pages) - - A full release includes the Windows installer which requires a Windows - environment to be available to create it. If not building in a Windows - environment, the build scripts assume that Wine is available. If this is not - the case, the skip.installer property may be set to skip the creation of the - Windows installer. - - 1. Configure GPG, if needed - - If the released artifacts have to be cryptographically signed with a - PGP signature, like the official ASF releases are, the following - property can be added to the build.properties file: - - # Location of GPG executable (used only for releases) - gpg.exec=/path/to/gpg - - You do not need it if you do not plan to sign the release. - - If "gpg.exec" property does not point to an existing file, it will be - ignored and this feature will be disabled. - - You will be prompted for the GPG passphrase when the release build - starts, unless "gpg.passphrase" property is set. - - 2. If building the Windows installer - - If running the build in a UAC enabled environment, building the Windows - installer requires elevated privileges. The simplest way to do this is to - open the command prompt used for the build with the "Run as administrator" - option. - - 3. Configure the code signing service - - ASF committers performing official releases will need to configure the code - signing service so that the Windows installer is signed during the build - process. The following properties need to be added to the build.properties - file: - - # Location of GPG executable (used only for releases) - # Code signing of Windows installer - do.codesigning=true - codesigning.user=request-via-pmc - codesigning.pwd=request-via-pmc - codesigning.partnercode=request-via-pmc - codesigning.service=Microsoft Windows Signing - - Release managers will be provided with the necessary credentials by the PMC. - - 4. Build the release: - - cd ${tomcat.source} - ant release - - -(7) Tests - -(7.1) Running Tomcat tests - -Tomcat includes a number of junit tests. The tests are not run when a -release is built. There is separate command to run them. - -To run the testsuite use the following command: - - cd ${tomcat.source} - ant test - -It is advisable to redirect output of the above command to a file for later -inspection. - -The JUnit reports generated by the tests will be written to the following -directory: - - output/build/logs - -By default the testsuite is run three times to test 3 different -implementations of Tomcat connectors: NIO, NIO2 and APR. (If you are not -familiar with Tomcat connectors, see config/http.html in documentation for -details). - -The 3 runs are enabled and disabled individually by the following -properties, which all are "true" by default: - - execute.test.nio=true - execute.test.nio2=true - execute.test.apr=true - -The APR connector can be tested only if Tomcat-Native library binaries are -found by the testsuite. The "test.apr.loc" property specifies the directory -where the library binaries are located. - -By default the "test.apr.loc" property specifies the following location: - - output/build/bin/native/ - -If you are on Windows and want to test the APR connector you can put the -tcnative-1.dll file into ${tomcat.source}/bin/native/ and it will be copied -into the above directory when the build runs. - -The unit tests include tests of the clustering functionality which require -multicast to be enabled. There is a simple application provided in the Tomcat -test source (org.apache.catalina.tribes.TesterMulticast) that can be used to -check if a machine supports multicast. Notes on enabling multicast for different -operating systems are provided in the Javadoc for that class. - - -(7.2) Running a single test - -It is possible to run a single JUnit test class by adding the "test.entry" -property to the build.properties file. The property specifies the name of -the test class. - -For example: - - test.entry=org.apache.catalina.util.TestServerInfo - -It is possible to further limit such run to a number of selected test -methods by adding "test.entry.methods" property. The property specifies a -comma-separated list of test case methods. - -For example: - - test.entry=org.apache.el.lang.TestELArithmetic - test.entry.methods=testMultiply01,testMultiply02 - - -(7.3) Running a set of tests - -It is possible to run a set of JUnit test classes by adding the "test.name" -property to the build.properties file. The property specifies an Ant -includes pattern for the fileset of test class files to run. - -The default value is "**/Test*.java", so all test classes are being -executed (with few exceptions - see build.xml for several exclude patterns). - -You can include multiple patterns by concatenating them with a comma (",") -as the separator. - -For example: - - test.name=**/TestSsl.java,**/TestWebSocketFrameClientSSL.java - -You can exclude specific JUnit test classes by adding the "test.exclude" -property to the build.properties file. The property specifies an Ant -excludes pattern for the fileset of test class files to exclude form the run. -The default value is empty, so no classes are excluded. The syntax is the same -as for the property "test.name". - - -(7.4) Other configuration options - - 1. It is possible to configure the directory where JUnit reports are - written to. It is configured by "test.reports" property. The default - value is - - output/build/logs - - 2. It is possible to enable generation of access log file when the tests - are run. This is off by default and can be enabled by the following - property: - - test.accesslog=true - - The "access_log." file will be written to the same directory as - JUnit reports, - - output/build/logs - - 3. The testsuite respects logging configuration as configured by - ${tomcat.source}/conf/logging.properties - - The log files will be written to the temporary directory used by the - tests, - - output/test-tmp/logs - - 4. It is possible to configure formatter used by JUnit reports. - Configuration properties are "junit.formatter.type", - "junit.formatter.extension" and "junit.formatter.usefile". - - For example the following property disables generation of separate report - files: - - junit.formatter.usefile=false - - 5. It is possible to speed up testing by letting JUnit to run several - tests in parallel. - - This is configured by setting "test.threads" property. The recommended - value is one thread per core. - - 6. Optional support is provided for the Cobertura code coverage tool. - -NOTE: Cobertura is licensed under GPL v2 with parts of it being under - Apache License v1.1. See https://cobertura.github.io/cobertura/ for details. - Using it during Tomcat build is optional and is off by default. - - Cobertura can be enabled using the following properties: - - test.cobertura=true - test.threads=1 - - Using Cobertura currently requires setting test.threads configuration - property to the value of 1. Setting that property to a different value - will disable code coverage. - - The report files by default are written to - - output/coverage - - 7. The performance tests are written to run reasonably powerful machines (such - as a developer may use day to day) assuming no other resource hungry - processes are running. - - These assumptions are not always true (e.g. on CI systems running in a - virtual machine) so the performance tests may be disabled by using the - following property: - - test.excludePerformance=true - - 8. Some tests include checks that the access log valve entries are as expected. - These checks include timings. On slower / loaded systems these checks will - often fail. The checks may be relaxed by using the following property: - - test.relaxTiming=true - - 9. It is known that some platforms (e.g. OSX El Capitan) require IPv4 to - be the default for the multicast tests to work. This is configured by - the following property: - - java.net.preferIPv4Stack=true - - 10. It is possible to control whether the output of the tests is displayed - on the console or not. By default it is displayed and can be disabled - by the following property: - - test.verbose=true - -(8) Source code checks - -(8.1) Checkstyle - -NOTE: Checkstyle is licensed under LGPL. Using Checkstyle during Tomcat - build is optional and is off by default. - - See http://checkstyle.sourceforge.net/ for more information. - -Tomcat comes with a Checkstyle configuration that tests its source code -for certain conventions, like presence of the license header. - -To enable Checkstyle, add the following property to build.properties file: - - execute.validate=true - -Once Checkstyle is enabled, the check will be performed automatically -during the build. The check is run before compilation of the source code. - -To speed-up repeated runs of this check, a cache is configured. The cache -is located in the following directory: - - output/res/checkstyle - -It is possible to run the check separately by calling the "validate" -target. The command is: - - cd ${tomcat.source} - ant -Dexecute.validate=true validate - - -(8.2) FindBugs - -NOTE: FindBugs is licensed under LGPL. Using Findbugs during Tomcat build is - optional and is off by default. - - See http://findbugs.sourceforge.net/ for more information. - -To enable FindBugs, add the following property to build.properties file: - - execute.findbugs=true - -To compile Tomcat classes and generate a FindBugs report, call the -"findbugs" target. For example: - - cd ${tomcat.source} - ant -Dexecute.findbugs=true findbugs - -The report file by default is written to - - output/findbugs - - -(8.3) End-of-line conventions check - -You usually would not need to run this check. You can skip this section. - -Apache Tomcat project has convention that all of its textual source files, -stored in Subversion repository, are marked with Subversion property -"svn:eol-style" with value of "native". This convention makes the editing -of source code on different platforms easier. - -This test is used by developers to check that the source code adheres to -this convention. It verifies that the ends of lines in textual files are -appropriate for the operating system where it is run. The idea is to run -this check regularly on two different platforms and notify developers when -an inconsistency is detected. - -The command to run this test is: - - cd ${tomcat.source} - ant validate-eoln diff --git a/ZipProject/wwwroot/zip/15509330470/3/changelog.html b/ZipProject/wwwroot/zip/15509330470/3/changelog.html deleted file mode 100644 index 378ebd6..0000000 --- a/ZipProject/wwwroot/zip/15509330470/3/changelog.html +++ /dev/null @@ -1,5916 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Changelog

Changelog

Tomcat 9.0.11 (markt)

-

Catalina

-
    -
  • Add: - Make the isLocked() method of the LockOutRealm - public and expose the method via JMX. (markt) -
  • -
  • Add: - 53387: Add support for regular expression capture groups to - the SSI servlet and filter. (markt) -
  • -
  • Fix: - 53411: Improve the handling of HTTP requests that do not - explicitly specify a host name when no default host is configured. Also - improve the tracking of changes to the default host as hosts are added - and removed while Tomcat is running. (markt) -
  • -
  • Fix: - Ensure that the HTTP Vary header is set correctly when using the CORS - filter and improve the cacheability of requests that pass through the - COPRS filter. (markt) -
  • -
  • Fix: - 62527: Revert restriction of JNDI to the java: - namespace. (remm) -
  • -
  • Add: - Introduce a new class - MultiThrowable - to report - exceptions when multiple actions are taken where each action may throw - an exception but all actions are taken before any errors are reported. - Use this new class when reporting multiple container (e.g. web - application) failures during start. (markt) -
  • -
  • Fix: - Correctly decode URL paths (+ should not be decoded to a - space in the path) in the RequestDispatcher and the web - application class loader. (markt) -
  • -
  • Add: - Make logout more robust if JASPIC subject is unexpectedly unavailable. - (markt) -
  • -
  • Fix: - 62547: JASPIC cleanSubject() was not called on - logout when the authenticator was configured to cache the authenticated - Principal. Patch provided by Guillermo González de Agüero. (markt) -
  • -
  • Add: - 62559: Add jaxb-*.jar to the list of JARs - ignored by StandardJarScanner. (markt) -
  • -
  • Add: - 62560: Add oraclepki.jar to the list of JARs - ignored by StandardJarScanner. (markt) -
  • -
  • Add: - 62607: Return a non-zero exit code from - catalina.[bat|sh] run if Tomcat fails to start. (markt) -
  • -
  • Fix: - Use short circuit logic to prevent potential NPE in CorsFilter. (fschumacher) -
  • -
  • Code: - Simplify construction of appName from container name in JAASRealm. (fschumacher) -
  • -
  • Code: - Remove ServletException from declaration of - Tomcat.addWebapp(String,String) since it is never thrown. - Patch provided by Tzafrir. (markt) -
  • -
-
-

Coyote

-
    -
  • Code: - Refactor HTTP date creation and parsing to reduce code duplication, - reduce the use of ThreadLocals and to increase the use of caching. - (markt) -
  • -
  • Fix: - 56676: Add a default location for the native library, as - ${catalina.home}/bin, which the testsuite already uses. (remm) -
  • -
  • Update: - 60560: Add support for using an inherited channel to - the NIO connector. Based on a patch submitted by Thomas Meyer with - testing and suggestions by Coty Sutherland. (remm) -
  • -
  • Fix: - 62507: Ensure that JSSE based TLS connectors work correctly - with a DKS keystore. (markt) -
  • -
  • Fix: - Refactor code that adds an additional header name to the - Vary HTTP response header to use a common utility method - that addresses several additional edge cases. (markt) -
  • -
  • Fix: - 62515: When a connector is configured (via setting - bindOnInit to false) to bind/unbind the server - socket during start/stop, close the socket earlier in the stop process - so new connections do not sit in the TCP backlog during the shutdown - process only to be dropped as stop completes. In this scenario new - connections will now be refused immediately. (markt) -
  • -
  • Fix: - 62526: Correctly handle PKCS12 format key stores when the key - store password is configured to be the empty string. (markt) -
  • -
  • Fix: - 62605: Ensure ReadListener.onDataAvailable() is - called when the initial request body data arrives after the request - headers when using asynchronous processing over HTTP/2. (markt) -
  • -
  • Fix: - 62614: Ensure that - WriteListener.onWritePossible() is called after - isReady() returns false and the window size is - subsequently incremented when using asynchronous processing over HTTP/2. - (markt) -
  • -
-
-

Jasper

-
    -
  • Add: - 53492: Make the Java file generation process multi-threaded. - By default, one thread will be used per core. Based on a patch by Dan - Fabulich. (markt) -
  • -
  • Add: - 62453: Add a performance optimisation for using expressions - in tags that depend on uninitialised tag attributes with implied scope. - Generally, using an explicit scope with tag attributes in EL is the best - way to avoid various potential performance issues. (markt) -
  • -
  • Fix: - Correctly decode URL paths (+ should not be decoded to a - space in the path) in the Jasper class loader. (markt) -
  • -
  • Fix: - 62603: Fix a potential race condition when development mode - is disabled and background compilation checks are enabled. It was - possible that some updates would not take effect and/or - ClassNotFoundExceptions would occur. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 62596: Remove the limit on the size of the initial HTTP - upgrade request used to establish the web socket connection. (markt) -
  • -
-
-

Web applications

-
    -
  • Add: - 62558: Add Russian translations for the Manager and Host - Manager web applications. Based on a patch by Ivan Krasnov. (markt) -
  • -
  • Add: - Add documents for Static Membership service. (kfujino) -
  • -
  • Add: - 62561: Add advanced class loader configuration information - regarding the use of the Server and Shared class loaders to the - documentation web application. (markt) -
  • -
-
-

Tribes

-
    -
  • Fix: - Ensures that the specified rxBufSize is correctly set to - receiver buffer size. (kfujino) -
  • -
  • Fix: - Correct the stop order of the Channel components. It stops in the - reverse order to that at startup. (kfujino) -
  • -
  • Add: - Added new StaticMembership implementation. This implementation does not - require any additional configuration of other - ChannelInterceptors. It works only with membership service. - (kfujino) -
  • -
-
-

Other

-
    -
  • Update: - Support building with Java 9+ while preserving the Java 8 compatibility - at runtime (requires Ant 1.9.8 or later). (ebourg) -
  • -
  • Update: - Update WSDL4J library to version 1.6.3 (from 1.6.2). (kkolinko) -
  • -
  • Update: - Update JUnit library to version 4.12 (from 4.11). (kkolinko) -
  • -
  • Update: - Downgrade CGLib library used for testing with EasyMock to version - 2.2.2 (from 2.2.3) as version 2.2.3 is not available from Maven Central. - (markt) -
  • -
  • Add: - Implement checksum checks when downloading dependencies that are used - to build Tomcat. (kkolinko) -
  • -
  • Fix: - Fixed spelling. Patch provided by Jimmy Casey via GitHub. (violetagg) -
  • -
  • Update: - Update the internal fork of Apache Commons Pool 2 to 3e02523 - (2018-08-09) to pick up some bug fixes and enhancements. (markt) -
  • -
  • Update: - Update the internal fork of Apache Commons DBCP 2 to abc0484 - (2018-08-09) to pick up some bug fixes and enhancements. (markt) -
  • -
  • Fix: - Correct various spelling errors throughout the source code and - documentation. Patch provided by Kazuhiro Sera. (markt) -
  • -
-
-

2018-06-25 Tomcat 9.0.10 (markt)

-

Catalina

-
    -
  • Fix: - 62476: Use GMT timezone for the value of - Expires header as required by HTTP specification - (RFC 7231, 7234). (kkolinko) -
  • -
-
-

not released Tomcat 9.0.9 (markt)

-

Catalina

-
    -
  • Fix: - Treat the <mapped-name> element of a - <env-entry> in web.xml in the same way as the - mappedName element of the equivalent @Resource - annotation. Both now attempt to set the mappedName property - of the resource. (markt) -
  • -
  • Fix: - Correct the processing of resources with - <injection-target>s defined in web.xml. First look - for a match using JavaBean property names and then, only if a match is - not found, look for a match using fields. (markt) -
  • -
  • Fix: - When restoring a saved request with a request body after FORM - authentication, ensure that calls to the HttpServletRequest - methods getRequestURI(), getQueryString() and - getProtocol() are not corrupted by the processing of the - saved request body. (markt) -
  • -
  • Fix: - JNDI resources that are defined with injection targets but no value are - now treated as if the resource is not defined. (markt) -
  • -
  • Fix: - Ensure that JNDI names used for <lookup-name> entries - in web.xml and for lookup elements of - @Resource annotations specify a name with an explicit - java: namespace. (markt) -
  • -
  • Fix: - 50019: Add support for <lookup-name>. - Based on a patch by Gurkan Erdogdu. (markt) -
  • -
  • Add: - Add the AuthenticatedUserRealm for use with CLIENT-CERT and - SPNEGO when just the authenticated user name is required. (markt) -
  • -
  • Fix: - 50175: Add a new attribute to the standard context - implementation, skipMemoryLeakChecksOnJvmShutdown, that - allows the user to configure Tomcat to skip the memory leak checks - usually performed during web application stop if that stop is triggered - by a JVM shutdown. (markt) -
  • -
  • Add: - 51497: Add an option, ipv6Canonical, to the - AccessLogValve that causes IPv6 addresses to be output in - canonical form defined by RFC 5952. (ognjen/markt) -
  • -
  • Add: - 51953: Add the RemoteCIDRFilter and - RemoteCIDRValve that can be used to allow/deny requests - based on IPv4 and/or IPv6 client address where the IP ranges are defined - using CIDR notation. Based on a patch by Francis Galiegue. (markt) -
  • -
  • Fix: - 62343: Make CORS filter defaults more secure. This is the fix - for CVE-2018-8014. (markt) -
  • -
  • Fix: - Ensure that the web application resources implementation does not - incorrectly cache results for resources that are only visible as class - loader resources. (markt) -
  • -
  • Fix: - 62387: Do not log a warning message if the file based - persistent session store fails to delete the file for a session when the - session is invalidated because the file has not been created yet. - (markt) -
  • -
  • Fix: - Make all loggers associated with Tomcat provided Filters non-static to - ensure that log messages are not lost when a web application is - reloaded. (markt) -
  • -
  • Fix: - Correct the manifest for the annotations-api.jar. The JAR implements the - Common Annotations API 1.3 and the manifest should reflect that. (markt) -
  • -
  • Fix: - Switch to non-static loggers where there is a possibility of a logger - becoming associated with a web application class loader causing log - messages to be lost if the web application is stopped. (markt) -
  • -
  • Add: - 62389: Add the IPv6 loopback address to the default - internalProxies regular expression. Patch by Craig Andrews. - (markt) -
  • -
  • Fix: - In the RemoteIpValve and RemoteIpFilter, - correctly handle the case when the request passes through one or more - trustedProxies but no internalProxies. Based - on a patch by zhanhb. (markt) -
  • -
  • Fix: - Correct the logic in MBeanFactory.removeConnector() to - ensure that the correct Connector is removed when there are multiple - Connectors using different addresses but the same port. (markt) -
  • -
  • Fix: - Make JAASRealm mis-configuration more obvious by requiring - the authenticated Subject to include at least one Principal of a type - specified by userClassNames. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Correct a regression in the error page handling that prevented error - pages from issuing redirects or taking other action that required the - response status code to be changed. (markt) -
  • -
  • Fix: - Consistent exception propagation for NIO2 SSL close. (remm) -
  • -
  • Fix: - Followup sync fix for NIO2 async IO blocking read/writes. (remm) -
  • -
  • Fix: - Log an error message if the AJP connector detects the the reverse proxy - is sending AJP messages that are too large for the configured - packetSize. (markt) -
  • -
  • Fix: - Relax Host validation by removing the requirement that the final - component of a FQDN must be alphabetic. (markt) -
  • -
  • Fix: - 62371: Improve logging of Host validation failures. (markt) -
  • -
  • Fix: - Fix a couple of unlikely edge cases in the shutting down of the - APR/native connector. (markt) -
  • -
  • Fix: - Add missing handshake timeout for NIO2. (remm) -
  • -
  • Fix: - Correctly handle a digest authorization header when the user name - contains an escaped character. (markt) -
  • -
  • Fix: - Correctly handle a digest authorization header when one of the hex - field values ends the header with in an invalid character. (markt) -
  • -
  • Fix: - Correctly handle an invalid quality value in an - Accept-Language header. (markt) -
  • -
  • Docs: - 62423: Fix SSL docs CRL attribute typo. (remm) -
  • -
  • Fix: - Improve IPv6 validation by ensuring that IPv4-Mapped IPv6 addresses do - not contain leading zeros in the IPv4 part. Based on a patch by Katya - Stoycheva. (markt) -
  • -
  • Fix: - Fix NullPointerException thrown from - replaceSystemProperties() when trying to log messages. (csutherl) -
  • -
  • Fix: - Avoid unnecessary processing of async timeouts. (markt) -
  • -
-
-

Jasper

-
    -
  • Add: - 50234: Add the capability to generate a web-fragment.xml file - to JspC. (markt) -
  • -
  • Fix: - 62080: Ensure that all reads of the current thread's context - class loader made by the UEL API and implementation are performed via a - PrivilegedAction to ensure that a - SecurityException is not triggered when running under a - SecurityManager. (mark) -
  • -
  • Fix: - 62350: Refactor - org.apache.jasper.runtime.BodyContentImpl so a - SecurityException is not thrown when running under a - SecurityManger and additional permissions are not required in the - catalina.policy file. This is a follow-up to the fix for - 43925. (kkolinko/markt) -
  • -
  • Fix: - Enable JspC from Tomcat 9 to work with Maven JspC compiler plug-ins - written for Tomcat 8.5.x. Patch provided by Pavel Cibulka. (markt) -
  • -
  • Fix: - Update web.xml, web-fragment.xml and web.xml extracts generated by JspC - to use the Servlet 4.0 version of the relevant schemas. (markt) -
  • -
-
-

Cluster

-
    -
  • Fix: - Remove duplicate calls when creating a replicated session to reduce the - time taken to create the session and thereby reduce the chances of a - subsequent session update message being ignored because the session does - not yet exist. (markt) -
  • -
  • Add: - Add the method to send a message with a specified sendOptions. (kfujino) -
  • -
  • Fix: - When sending the GET_ALL_SESSIONS message, make sure that - sends with asynchronous option in order to avoid ack timeout. Waiting to - receive the ALL_SESSION_DATA message should be done with - waitForSendAllSessions instead of ACK. (kfujino) -
  • -
-
-

WebSocket

-
    -
  • Update: - Use NIO2 API for websockets writes. (remm) -
  • -
  • Fix: - When decoding of path parameter failed, make sure to throw - DecodeException instead of throwing - ArrayIndexOutOfBoundsException. (kfujino) -
  • -
  • Fix: - Improve the handling of exceptions during TLS handshakes for the - WebSocket client. (markt) -
  • -
  • Fix: - Enable host name verification when using TLS with the WebSocket client. - (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - 62395: Clarify the meaning of the connector attribute - minSpareThreads in the documentation web application. - (markt) -
  • -
  • Fix: - Correct the documentation for the allowHostHeaderMismatch - attribute of the standard HTTP Connector implementations. (markt) -
  • -
-
-

Tribes

-
    -
  • Fix: - Ensure that the correct default value is returned when retrieve unset - properties in McastService. (kfujino) -
  • -
  • Add: - Make MembershipService more easily extensible. (kfujino) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - When logValidationErrors is set to true, the connection - validation error is logged as SEVERE instead of - WARNING. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Ensure that Apache Tomcat may be built from source with Java 11. (markt) -
  • -
  • Add: - 52381: Add OSGi metadata to JAR files. (markt) -
  • -
  • Fix: - 62391: Remove references to javaw.exe as this - file is not required by Tomcat and the references prevent the use of the - Server JRE. (markt) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.17 to - pick up the latest Windows binaries built with APR 1.6.3 and OpenSSL - 1.0.2o. (markt) -
  • -
  • Update: - 62458: Update the internal fork of Commons Pool 2 to dfef97b - (2018-06-18) to pick up some bug fixes and enhancements. (markt) -
  • -
  • Update: - Update the internal fork of Commons DBCP 2 to 2.4.0. (markt) -
  • -
-
-

2018-05-03 Tomcat 9.0.8 (markt)

-

Catalina

-
    -
  • Fix: - 62263: Avoid a NullPointerException when the - RemoteIpValve processes a request for which no Context can - be found. (markt) -
  • -
  • Add: - 62258: Don't trigger the standard error page mechanism when - the error has caused the connection to the client to be closed as no-one - will ever see the error page. (markt) -
  • -
  • Fix: - Register MBean when DataSource Resource - type="javax.sql.XADataSource". Patch provided by Masafumi Miura. - (csutherl) -
  • -
  • Fix: - Fix a rare edge case that is unlikely to occur in real usage. This edge - case meant that writing long streams of UTF-8 characters to the HTTP - response that consisted almost entirely of surrogate pairs could result - in one surrogate pair being dropped. (markt) -
  • -
  • Add: - Update the internal fork of Apache Commons BCEL to r1829827 to add early - access Java 11 support to the annotation scanning code. (markt) -
  • -
  • Fix: - 62297: Enable the CrawlerSessionManagerValve to - correctly handle bots that crawl multiple hosts and/or web applications - when the Valve is configured on a Host or an Engine. (fschumacher) -
  • -
  • Fix: - 62309: Fix a SecurityException when using JASPIC - under a SecurityManager when authentication is not - mandatory. (markt) -
  • -
  • Fix: - 62329: Correctly list resources in JAR files when directories - do not have dedicated entries. Patch provided by Meelis Müür. (markt) -
  • -
  • Add: - Collapse multiple leading / characters to a single - / in the return value of - HttpServletRequest#getContextPath() to avoid issues if the - value is used with HttpServletResponse#sendRedirect(). This - behaviour is enabled by default and configurable via the new Context - attribute allowMultipleLeadingForwardSlashInPath. (markt) -
  • -
  • Fix: - Improve handling of overflow in the UTF-8 decoder with supplementary - characters. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Correct off-by-one error in thread pool that allowed thread pools to - increase in size to one more than the configured limit. Patch provided - by usc. (markt) -
  • -
  • Fix: - Prevent unexpected TLS handshake failures caused by errors during a - previous handshake that were not correctly cleaned-up when using the NIO - or NIO2 connector with the OpenSSLImplementation. (markt) -
  • -
  • Add: - 62273: Implement configuration options to work-around - specification non-compliant user agents (including all the major - browsers) that do not correctly %nn encode URI paths and query strings - as required by RFC 7230 and RFC 3986. (markt) -
  • -
  • Fix: - Fix sync for NIO2 async IO blocking read/writes. (remm) -
  • -
-
-

Jasper

-
    -
  • Update: - Update the Eclipse Compiler for Java to 4.7.3a. (markt) -
  • -
  • Update: - Allow 9 to be used to specify Java 9 as the compiler source - and/or compiler target for JSP compilation. The Early Access value of - 1.9 is still supported. (markt) -
  • -
  • Add: - Add support for specifying Java 10 (with the value 10) as - the compiler source and/or compiler target for JSP compilation. (markt) -
  • -
  • Fix: - 62287: Do not rely on hash codes to test instances of - ValueExpressionImpl for equality. Patch provided by Mark - Struberg. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 62301: Correct a regression in the fix for 61491 - that didn't correctly handle a final empty message part in all - circumstances when using PerMessageDeflate. (markt) -
  • -
  • Fix: - 62332: Ensure WebSocket connections are closed after an I/O - error is experienced reading from the client. (markt) -
  • -
-
-

Other

-
    -
  • Fix: - Avoid warning when running under Cygwin when the - JAVA_ENDORSED_DIRS environment variable is not set. Patch - provided by Zemian Deng. (markt) -
  • -
-
-

2018-04-07 Tomcat 9.0.7 (markt)

-

Catalina

-
    -
  • Fix: - 51195: Avoid a false positive report of a web application - memory leak by clearing ObjectStreamClass$Caches of classes - loaded by the web application when the web application is stopped. - (markt) -
  • -
  • Fix: - 52688: Add support for the maxDays attribute to - the AccessLogValve and ExtendedAccessLogValve. - This allows the maximum number of days for which rotated access logs - should be retained before deletion to be defined. (markt) -
  • -
  • Fix: - Ensure the MBean names for the SSLHostConfig and - SSLHostConfigCertificate are correctly formed when the - Connector is bound to a specific IP address. (markt) -
  • -
  • Fix: - 62168: When using the PersistentManager honor a - value of -1 for minIdleSwap and do not swap - out sessions to keep the number of active sessions under - maxActive. Patch provided by Holger Sunke. (markt) -
  • -
  • Fix: - 62172: Improve Javadoc for - org.apache.catalina.startup.Constants and ensure that the - constants are correctly used. (markt) -
  • -
  • Fix: - 62175: Avoid infinite recursion, when trying to validate - a session while loading it with PersistentManager. - (fschumacher) -
  • -
  • Fix: - Ensure that NamingContextListener instances are only - notified once of property changes on the associated naming resources. - (markt) -
  • -
  • Add: - 62224: Disable the forkJoinCommonPoolProtection - of the JreMemoryLeakPreventionListener when running on Java - 9 and above since the underlying JRE bug has been fixed. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Avoid potential loop in APR/Native poller. (markt) -
  • -
  • Fix: - Ensure streams that are received but not processed are excluded from the - tracking of maximum ID of processed streams. (markt) -
  • -
  • Fix: - Refactor the check for a paused connector to consistently prevent new - streams from being created after the connector has been paused. (markt) -
  • -
  • Fix: - Improve debug logging for HTTP/2 pushed streams. (markt) -
  • -
  • Fix: - The OpenSSL engine SSL session will now ignore invalid accesses. (remm) -
  • -
  • Fix: - 62177: Correct two protocol errors with HTTP/2 - PUSH_PROMISE frames. Firstly, the HTTP/2 protocol only - permits pushes to be sent on peer initiated requests. Secondly, pushes - must be sent in order of increasing stream ID. These restriction were - not being enforced leading to protocol errors at the client. (markt) -
  • -
-
-

Web applications

-
    -
  • Add: - Add document for FragmentationInterceptor. (kfujino) -
  • -
  • Add: - Document how the roles for an authenticated user are determined when the - CombinedRealm is used. (markt) -
  • -
  • Fix: - 62163: Correct the Tomcat Setup documentation that - incorrectly referred to Java 7 as the minimum version rather than Java - 8. (markt) -
  • -
-
-

Tribes

-
    -
  • Fix: - Add JMX support for FragmentationInterceptor in order to - prevent warning of startup. (kfujino) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - Ensure that SQLWarning has been cleared when connection - returns to the pool. (kfujino) -
  • -
  • Add: - Enable clearing of SQLWarning via JMX. (kfujino) -
  • -
  • Fix: - Ensure that parameters have been cleared when - PreparedStatement and/or CallableStatement are - cached. (kfujino) -
  • -
  • Fix: - Enable PoolCleaner to be started even if validationQuery - is not set. (kfujino) -
  • -
-
-

Other

-
    -
  • Update: - Update the build script so MD5 hashes are no longer generated for - releases as per the change in the ASF distribution policy. (markt) -
  • -
  • Fix: - 62164: Switch the build script to use TLS for downloads from - SourceForge and Maven Central to avoid failures due to HTTP to HTTPS - redirects. (markt) -
  • -
  • Add: - Always report the OS's umask when launching the JVM. (schultz) -
  • -
  • Add: - Add managed connections package to the package renamed DBCP2 to provide - a complete DBCP2 in Tomcat. (remm) -
  • -
-
-

2018-03-08 Tomcat 9.0.6 (markt)

-

Catalina

-
    -
  • Fix: - 43866: Add additional attributes to the Manager to provide - control over which listeners are called when an attribute is added to - the session when it has already been added under the same name. This is - to aid clustering scenarios where setAttribute() is often - called to signal that the attribute value has been mutated and needs to - be replicated but it may not be required, or even desired, for the - associated listeners to be triggered. The default behaviour has not been - changed. (markt) -
  • -
  • Fix: - Minor optimization when calling class transformers. (rjung) -
  • -
  • Add: - Pass errors triggered by invalid requests or unavailable services to the - application provided error handling and/or the container provided error - handling (ErrorReportValve) as appropriate. (markt) -
  • -
  • Add: - 41007: Add the ability to specify static HTML responses for - specific error codes and/or exception types with the - ErrorReportValve. (markt) -
  • -
  • Fix: - Prevent Tomcat from applying gzip compression to content that is already - compressed with brotli compression. Based on a patch provided by burka. - (markt) -
  • -
  • Fix: - 62090: Null container names are not allowed. (remm) -
  • -
  • Fix: - 62104: Fix programmatic login regression as the - NonLoginAuthenticator has to be set for it to work (if no login method - is specified). (remm) -
  • -
  • Fix: - 62117: Improve error message in catalina.sh when - calling kill -0 <pid> fails. Based on a suggestion - from Mark Morschhaeuser. (markt) -
  • -
  • Fix: - 62118: Correctly create a JNDI ServiceRef using - the specified interface rather than the concrete type. Based on a - suggestion by Ángel Álvarez Páscua. (markt) -
  • -
  • Fix: - Fix for RequestDumperFilter log attribute. Patch provided - by Kirill Romanov via Github. (violetagg) -
  • -
  • Fix: - 62123: Avoid ConcurrentModificationException - when attempting to clean up application triggered RMI memory leaks on - web application stop. (markt) -
  • -
  • Add: - When a deployment descriptor is deployed that includes a - path attribute, log a warning that the path - attribute will be ignored. (markt) -
  • -
  • Add: - When a deployment descriptor is deployed that references an external - docBase and, as a result, a docBase under the - appBase will be ignored, log a warning. (markt) -
  • -
  • Fix: - Correct a regression in the fix for 60276 that meant that - compression was applied to all MIME types. Patch provided by Stefan - Knoblich. (markt) -
  • -
-
-

Coyote

-
    -
  • Add: - Add async HTTP/2 parser for NIO2. (remm) -
  • -
  • Fix: - Add minor HPACK fixes, based on fixes by Stuart Douglas. (remm) -
  • -
  • Fix: - 61751: Follow up fix so that OpenSSL engine returns - underflow when unwrapping if no bytes were produced and the input is - empty. (remm) -
  • -
  • Fix: - Minor OpenSSL engine cleanups. (remm) -
  • -
  • Fix: - NIO SSL handshake should throw an exception on overflow status, like - NIO2 SSL. (remm) -
  • -
-
-

Web applications

-
    -
  • Add: - 47467: When deploying a web application via the manager - application and a path is not explicitly specified, derive it from the - provided deployment descriptor or, if that is not present, the WAR or - DIR. (markt) -
  • -
  • Add: - 48672: Add documentation for the Host Manager web - application. Patch provided by Marek Czernek. (markt) -
  • -
  • Add: - Add support for specifying the application version when deploying an - application via the Manager application HTML interface. (markt) -
  • -
  • Add: - Work-around a known, non-specification compliant behaviour in some - versions of IE that can allow XSS when the Manager application generates - a plain text response. Based on a suggestion from Muthukumar Marikani. - (markt) -
  • -
-
-

2018-02-11 Tomcat 9.0.5 (markt)

-

Catalina

-
    -
  • Fix: - Prevent a stack trace being written to standard out when running on Java - 10 due to changes in the LogManager implementation. (markt) -
  • -
  • Fix: - Avoid duplicate load attempts if one has been made already. (remm) -
  • -
  • Fix: - Avoid NPE in ThreadLocalLeakPreventionListener if there is no Engine. - (remm) -
  • -
  • Fix: - 62000: When a JNDI reference cannot be resolved, ensure that - the root cause exception is reported rather than swallowed. (markt) -
  • -
  • Fix: - 62036: When caching an authenticated user Principal in the - session when the web application is configured with the - NonLoginAuthenticator, cache the internal Principal object - rather than the user facing Principal object as Tomcat requires the - internal object to correctly process later authorization checks. (markt) -
  • -
  • Add: - Refactor error handling to enable errors that occur before processing is - passed to the application to be handled by the application provided - error handling and/or the container provided error handling - (ErrorReportValve) as appropriate. (markt) -
  • -
  • Add: - Pass 404 errors triggered by a missing ROOT web application to the - container error handling to generate the response body. (markt) -
  • -
  • Add: - Pass 400 errors triggered by invalid request targets to the container - error handling to generate the response body. (markt) -
  • -
  • Fix: - Provide a correct Allow header when responding to an HTTP - TRACE request for a JSP with a 405 status code. (markt) -
  • -
  • Fix: - When using Tomcat embedded, only perform Authenticator configuration - once during web application start. (markt) -
  • -
  • Fix: - 62067: Correctly apply security constraints mapped to the - context root using a URL pattern of "". (markt) -
  • -
  • Fix: - Process all ServletSecurity annotations at web application - start rather than at servlet load time to ensure constraints are applied - consistently. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - 61751: Fix truncated request input streams when using NIO2 - with TLS. (markt) -
  • -
  • Fix: - 62023: Log error reporting multiple SSLHostConfig elements - when using the APR Connector instead of crashing Tomcat. (csutherl) -
  • -
  • Fix: - 62032: Fix NullPointerException when certificateFile is not - defined on an SSLHostConfig and unify the behavior when a - certificateFile is defined but the file does not exist for both - JKS and PEM file types. (csutherl) -
  • -
  • Fix: - Ensure that the toString() method behaves consistently for - ByteChunk and CharChunk and that - null is returned when toString() is called - both on newly created objects and immediately after a call to - recycle(). This should not impact typical Tomcat users. It - may impact users who use these classes directly in their own code. - (markt) -
  • -
  • Fix: - Ensure that the toString(), toBytes() and - toChars() methods of MessageBytes behave - consistently and do not throw a NullPointerException both - on newly created objects and immediately after a call to - recycle(). This should not impact typical Tomcat users. It - may impact users who use these classes directly in their own code. - (markt) -
  • -
  • Fix: - When processing an HTTP 1.0 request in the HTTP connector and no host - information is provided in the request, obtain the server port from the - local port rather than the connector configuration since the configured - value maybe zero. (markt) -
  • -
  • Add: - Enable strict validation of the provided host name and port for all - connectors. Requests with invalid host names and/or ports will be - rejected with a 400 response. (markt) -
  • -
  • Fix: - Update the host validation to permit host names and components of domain - names (excluding top-level domains) to start with a number and to ensure - that top-level domains are fully alphabetic. (markt) -
  • -
  • Fix: - 62053: Fix NPE when writing push headers with HTTP/2 NIO2. - Patch submitted by Holger Sunke. (remm) -
  • -
-
-

Jasper

-
    -
  • Fix: - Include an HTTP Allow header when a JSP generates a - 405 response due to a request with an unsupported method. (markt) -
  • -
  • Add: - Add support for the HTTP OPTION method to JSPs. The - JSP specification explicitly states that the behaviour for this - method is undefined for JSPs so this is a Tomcat specific - behaviour. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 62024: When closing a connection with an abnormal close, - close the socket immediately rather than waiting for a close message - from the client that may never arrive. (markt) -
  • -
-
-

Webapps

-
    -
  • Fix: - 62049: Fix missing class from manager 404 JSP error page. - (remm) -
  • -
-
-

jdbc-pool

-
    -
  • Add: - Enhance the JMX support for jdbc-pool in order to expose - PooledConnection and JdbcInterceptors. - (kfujino) -
  • -
  • Add: - Add MBean for PooledConnection. (kfujino) -
  • -
  • Add: - 62011: Add MBean for StatementCache. (kfujino) -
  • -
  • Add: - Expose the cache size for each connection via JMX in - StatementCache. (kfujino) -
  • -
  • Add: - Add MBean for ResetAbandonedTimer. (kfujino) -
  • -
-
-

Other

-
    -
  • Update: - Update the list with the public interfaces in the RELEASE-NOTES. - (violetagg) -
  • -
  • Update: - Update the NSIS Installer used to build the Windows installer to version - 3.03. (kkolinko) -
  • -
-
-

2018-01-22 Tomcat 9.0.4 (markt)

-

Catalina

-
    -
  • Fix: - Correct a regression in the previous fix for 61916 that meant - that any call to addHeader() would have been replaced with - a call to setHeader() for all requests mapped to the - AddDefaultCharsetFilter. (markt) -
  • -
  • Fix: - 61999: maxSavePostSize set to 0 should disable saving POST - data during authentication. (remm) -
  • -
-
-

Coyote

-
    -
  • Fix: - Fix NIO2 HTTP/2 sendfile. (remm) -
  • -
  • Fix: - 61993: Improve handling for ByteChunk and - CharChunk instances that grow close to the maximum size - allowed by the JRE. (markt) -
  • -
-
-

Jasper

-
    -
  • Add: - 43925: Add a new system property - (org.apache.jasper.runtime.BodyContentImpl.BUFFER_SIZE) to - control the size of the buffer used by Jasper when buffering tag bodies. - (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - 62006: Document the new JvmOptions9 command line - parameter for tomcat9.exe. (markt) -
  • -
-
-

not released Tomcat 9.0.3 (markt)

-

Catalina

-
    -
  • Add: - 57619: Implement a small optimisation to how JAR URLs are - processed to reduce the storage of duplicate String objects in memory. - Patch provided by Dmitri Blinov. (markt) -
  • -
  • Fix: - Add some missing NPEs to ServletContext. (remm) -
  • -
  • Fix: - Update the Java EE 8 XML schema to the released versions. (markt) -
  • -
  • Fix: - Minor HTTP/2 push fixes. (remm) -
  • -
  • Fix: - 61916: Extend the AddDefaultCharsetFilter to add - a character set when the content type is set via - setHeader() or addHeader() as well as when it - is set via setContentType(). (markt) -
  • -
  • Fix: - When using WebDAV to copy a file resource to a destination that requires - a collection to be overwritten, ensure that the operation succeeds - rather than fails (with a 500 response). This enables Tomcat to pass two - additional tests from the Litmus WebDAV test suite. (markt) -
  • -
  • Update: - Modify the Default and WebDAV Servlets so that a 405 status code is - returned for PUT and DELETE requests when - disabled via the readonly initialisation parameter. -
  • -
  • Fix: - Align the contents of the Allow header with the response - code for the Default and WebDAV Servlets. For any given resource a - method that returns a 405 status code will not be listed in the - Allow header and a method listed in the Allow - header will not return a 405 status code. (markt) -
  • -
-
-

Coyote

-
    -
  • Add: - 60276: Implement GZIP compression support for responses - served over HTTP/2. (markt) -
  • -
  • Fix: - Do not call onDataAvailable without any data to read. (remm) -
  • -
  • Fix: - Correctly handle EOF when ServletInputStream.isReady() is - called. (markt) -
  • -
  • Fix: - 61886: Log errors on non-container threads at - DEBUG rather than INFO. The exception will be - made available to the application via the asynchronous error handling - mechanism. (markt) -
  • -
  • Fix: - 61914: Possible NPE with Java 9 when creating a SSL engine. - Patch submitted by Evgenij Ryazanov. (remm) -
  • -
  • Fix: - 61918: Fix connectionLimitLatch counting when closing an - already closed socket. Based on a patch by Ryan Fong. (remm) -
  • -
  • Add: - Add support for the OpenSSL ARIA ciphers to the OpenSSL to JSSE - cipher mapping. (markt) -
  • -
  • Fix: - 61932: Allow a call to AsyncContext.dispatch() - to terminate non-blocking I/O. (markt) -
  • -
  • Fix: - 61948: Improve the handling of malformed ClientHello messages - in the code that extracts the SNI information from a TLS handshake for - the JSSE based NIO and NIO2 connectors. (markt) -
  • -
  • Fix: - Fix NIO2 handshaking with a full input buffer. (remm) -
  • -
  • Add: - Return a simple, plain text error message if a client attempts to make a - plain text HTTP connection to a TLS enabled NIO or NIO2 Connector. - (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 61854: When using sets and/or maps in EL expressions, ensure - that Jasper correctly parses the expression. Patch provided by Ricardo - Martin Camarero. (markt) -
  • -
  • Fix: - Improve the handling of methods with varargs in EL expressions. In - particular, the calling of a varargs method with no parameters now works - correctly. Based on a patch by Nitkalya (Ing) Wiriyanuparb. (markt) -
  • -
  • Fix: - 61945: Fix prototype mode used to compile tags. (remm) -
  • -
-
-

Web applications

-
    -
  • Add: - 61223: Add the mbeans-descriptors.dtd file to the custom - MBean documentation so users have a reference to use when constructing - mbeans-descriptors.xml files for custom components. (markt) -
  • -
  • Add: - 61565: Add the ability to trigger a reloading of TLS host - configuration (certificate and key files, server.xml is not re-parsed) - via the Manager web application. (markt) -
  • -
  • Add: - 61566: Expose the currently in use certificate chain and list - of trusted certificates for all virtual hosts configured using the JSSE - style (keystore) TLS configuration via the Manager web application. - (markt) -
  • -
  • Fix: - Partial fix for 61886. Ensure that multiple threads do not - attempt to complete the AsyncContext if an I/O error occurs - in the stock ticker example Servlet. (markt) -
  • -
  • Fix: - 61886: Prevent ConcurrentModificationException - when running the asynchronous stock ticker in the examples web - application. (markt) -
  • -
  • Fix: - 61886: Prevent NullPointerException and other - errors if the stock ticker example is running when the examples web - application is stopped. (markt) -
  • -
  • Fix: - 61910: Clarify the meaning of the allowLinking - option in the documentation web application. (markt) -
  • -
  • Add: - Add OCSP configuration information to the SSL How-To. Patch provided by - Marek Czernek. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - 61312: Prevent NullPointerExceptionn when using - the statement cache of connection that has been closed. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Add an additional system property for the system property replacement. - (remm) -
  • -
  • Fix: - Add missing SHA-512 hash for release artifacts to the build script. - (markt) -
  • -
  • Update: - Update the internal fork of Commons Pool 2 to 2.4.3. (markt) -
  • -
  • Update: - Update the internal fork of Commons DBCP 2 to 8a71764 (2017-10-18) to - pick up some bug fixes and enhancements. (markt) -
  • -
  • Update: - Update the internal fork of Commons FileUpload to 6c00d57 (2017-11-23) - to pick up some code clean-up. (markt) -
  • -
  • Update: - Update the internal fork of Commons Codec to r1817136 to pick up some - code clean-up. (markt) -
  • -
  • Fix: - The native source bundles (for Commons Daemon and Tomcat Native) are no - longer copied to the bin directory for the deploy target. They are now - only copied to the bin directory for the release target. (markt) -
  • -
-
-

2017-11-30 Tomcat 9.0.2 (markt)

-

Catalina

-
    -
  • Fix: - Fix possible SecurityException when using TLS related - request attributes. (markt) -
  • -
  • Fix: - 61597: Extend the StandardJarScanner to scan - JARs on the module path when running on Java 9 and class path scanning - is enabled. (markt) -
  • -
  • Fix: - 61601: Add support for multi-release JARs in JAR scanning and - web application class loading. (markt) -
  • -
  • Fix: - 61681: Allow HTTP/2 push when using request wrapping. (remm) -
  • -
  • Add: - Provide the SessionInitializerFilter that can be used to - ensure that an HTTP session exists when initiating a WebSocket - connection. Patch provided by isapir. (markt) -
  • -
  • Fix: - 61682: When re-prioritising HTTP/2 streams, ensure that both - parent and children fields are correctly updated to avoid a possible - StackOverflowError. (markt) -
  • -
  • Fix: - Improve concurrency by reducing the scope of the synchronisation for - javax.security.auth.message.config.AuthConfigFactory in the - JASPIC API implementation. Based on a patch by Pavan Kumar. (markt) -
  • -
  • Fix: - Avoid a possible NullPointerException when timing out - AsyncContext instances during shut down. (markt) -
  • -
  • Fix: - 61777: Avoid a NullPointerException when - detaching a JASPIC RegistrationListener. Patch provided by - Lazar. (markt) -
  • -
  • Fix: - 61778: Correct the return value when detaching a JASPIC - RegistrationListener. Patch provided by Lazar. (markt) -
  • -
  • Fix: - 61779: Avoid a NullPointerException when a - null RegistrationListener is passed to - AuthConfigFactory.getConfigProvider(). Patch provided by - Lazar. (markt) -
  • -
  • Fix: - 61780: Only include the default JASPIC registration ID in the - return value for a call to - AuthConfigFactory.getRegistrationIDs() if a - RegistrationContext has been registered using the default - registration ID. Patch provided by Lazar. (markt) -
  • -
  • Fix: - 61781: Enable JASPIC provider registrations to be persisted - when the layer and/or application context are null. Patch - provided by Lazar. (markt) -
  • -
  • Fix: - 61782: When calling - AuthConfigFactory.doRegisterConfigProvider() and the - requested JASPIC config provider class is found by the web application - class loader, do not attempt to load the class with the class loader - that loaded the JASPIC API. Patch provided by Lazar. (markt) -
  • -
  • Fix: - 61783: When calling - AuthConfigFactory.removeRegistration() and the registration - is persistent, it should be removed from the persistent store. Patch - provided by Lazar. (markt) -
  • -
  • Fix: - 61784: Correctly handle the case when - AuthConfigFactoryImpl.registerConfigProvider() is called - with a provider name of null. Patch provided by Lazar. - (markt) -
  • -
  • Add: - 61795: Add a property to the Authenticator - implementations to enable a custom JASPIC CallbackHandler - to be specified. Patch provided by Lazar. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - 61568: Avoid a potential SecurityException when - using the NIO2 connector and a new thread is added to the pool. (markt) -
  • -
  • Fix: - 61583: Correct a further regression in the fix to enable the - use of Java key stores that contained multiple keys that did not all - have the same password. This fixes PKCS11 key store handling with - multiple keys selected with an alias. (markt) -
  • -
  • Fix: - Improve NIO2 syncing for async IO operations. (remm) -
  • -
  • Add: - Sendfile support for HTTP/2 and NIO2. (remm) -
  • -
  • Fix: - Reduce default HTTP/2 stream concurrent execution within a connection - from 200 to 20. (remm) -
  • -
  • Fix: - 61668: Avoid a possible NPE when calling - AbstractHttp11Protocol.getSSLProtocol(). (markt) -
  • -
  • Fix: - 61673: Avoid a possible - ConcurrentModificationException when working with the - streams associated with a connection. (markt) -
  • -
  • Fix: - 61719: Avoid possible NPE calling - InputStream.setReadListener with HTTP/2. (remm) -
  • -
  • Fix: - 61736: Improve performance of NIO connector when clients - leave large time gaps between network packets. Patch provided by Zilong - Song. (markt) -
  • -
  • Fix: - 61740: Correct an off-by-one error in the Hpack header index - validation that caused intermittent request failures when using HTTP/2. - (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 61604: Fix SMAP generation for JSPs that generate no output. - (markt) -
  • -
  • Fix: - 61816: Invalid expressions in attribute values or template - text should trigger a translation (compile time) error, not a run time - error. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 61604: Add support for authentication in the websocket - client. Patch submitted by J Fernandez. (remm) -
  • -
-
-

Web applications

-
    -
  • Fix: - Correct Javadoc links to point to Java SE 8 and Java EE 8. (markt) -
  • -
  • Fix: - Enable Javadoc to be built with Java 9. (markt) -
  • -
  • Fix: - 61603: Add XML filtering for the status servlet output where - needed. (remm) -
  • -
  • Fix: - Correct the description of how the CGI servlet maps a request to a - script in the CGI How-To. (markt) -
  • -
-
-

Tribes

-
    -
  • Fix: - Fix incorrect behavior that attempts to resend channel messages more - than the actual setting value of maxRetryAttempts. - (kfujino) -
  • -
  • Fix: - Ensure that the remaining Sender can send channel messages by avoiding - unintended ChannelException caused by comparing the number - of failed members and the number of remaining Senders. (kfujino) -
  • -
  • Fix: - Ensure that remaining SelectionKeys that were not handled by throwing a - ChannelException during SelectionKey processing are - handled. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Improve the fix for 61439 and exclude the JPA, JAX-WS and EJB - annotations completely from the Tomcat distributions. (markt) -
  • -
  • Fix: - Improve handling of endorsed directories. The endorsed directory - mechanism will only be used if the JAVA_ENDORSED_DIRS - system property is explicitly set or if - $CATALINA_HOME/endorsed exists. When running on Java 9, any - such attempted use of the endorsed directory mechanism will trigger an - error and Tomcat will fail to start. (rjung) -
  • -
  • Add: - 51496: When using the Windows installer, check if the - requested service name already exists and, if it does, prompt the user - to select an alternative service name. Patch provided by Ralph - Plawetzki. (markt) -
  • -
  • Fix: - 61590: Enable service.bat to recognise when - JAVA_HOME is configured for a Java 9 JDK. (markt) -
  • -
  • Fix: - 61598: Update the Windows installer to search the new (as of - Java 9) registry locations when looking for a JRE. (markt) -
  • -
  • Add: - Add generation of a SHA-512 hash for release artifacts to the build - script. (markt) -
  • -
  • Fix: - 61658: Update MIME mappings for fonts to use - font/* as per RFC8081. (markt) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.16 to - pick up the latest Windows binaries built with APR 1.6.3 and OpenSSL - 1.0.2m. (markt) -
  • -
  • Update: - Update the NSIS Installer used to build the Windows installer to version - 3.02.1. (kkolinko) -
  • -
  • Update: - Update the Windows installer to use "The Apache Software Foundation" as - the Publisher when Tomcat is displayed in the list of installed - applications in Microsoft Windows. (kkolinko) -
  • -
  • Fix: - 61803: Remove outdated SSL information from the Security - documentation. (remm) -
  • -
-
-

2017-09-30 Tomcat 9.0.1 (markt)

-

Catalina

-
    -
  • Fix: - Use the correct path when loading the JVM logging.properties - file for Java 9. (rjung) -
  • -
  • Fix: - Add additional validation to the resource handling required to fix - CVE-2017-12617 on Windows. The checks were being performed elsewhere but - adding them to the resource handling ensures that the checks are always - performed. (markt) -
  • -
-
-

Other

-
    -
  • Fix: - 61563: Correct typos in Spanish translation. Patch provided by - Gonzalo Vásquez. (csutherl) -
  • -
-
-

not released Tomcat 9.0.0 (markt)

-

Catalina

-
    -
  • Fix: - 61542: Fix CVE-2017-12617 and prevent JSPs from being - uploaded via a specially crafted request when HTTP PUT was enabled. - (markt) -
  • -
  • Fix: - 61554: Exclude test files in unusual encodings and markdown - files intended for display in GitHub from RAT analysis. Patch provided - by Chris Thistlethwaite. (markt) -
  • -
-
-

Coyote

-
    -
  • Add: - 60762: Add the ability to make changes to the TLS - configuration of a connector at runtime without having to restart the - Connector. (markt) -
  • -
  • Add: - Add an option to reject requests that contain HTTP headers with invalid - (non-token) header names with a 400 response and reject such requests by - default. (markt) -
  • -
  • Fix: - Implement the requirements of RFC 7230 (and RFC 2616) that HTTP/1.1 - requests must include a Host header and any request that - does not must be rejected with a 400 response. (markt) -
  • -
  • Fix: - Implement the requirements of RFC 7230 that any HTTP/1.1 request that - specifies a host in the request line, must specify the same host in the - Host header and that any such request that does not, must - be rejected with a 400 response. This check is optional but enabled by - default. It may be disabled with the - allowHostHeaderMismatch attribute of the Connector. (markt) -
  • -
  • Fix: - Implement the requirements of RFC 7230 that any HTTP/1.1 request that - contains multiple Host headers is rejected with a 400 - response. (markt) -
  • -
  • Update: - Add a way to set the property source in embedded mode. (remm) -
  • -
  • Fix: - 61557: Correct a further regression in the fix to enable the - use of Java key stores that contain multiple keys that do not all have - the same password. The regression broke support for some FIPS compliant - key stores. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - 61545: Correctly handle invocations of methods defined in the - PooledConnection interface when using pooled XA - connections. Patch provided by Nils Winkler. (markt) -
  • -
-
-

Other

-
    -
  • Fix: - Update fix for 59904 so that values less than zero are accepted - instead of throwing a NegativeArraySizeException. (remm) -
  • -
  • Add: - Complete the implementation of the Servlet 4.0 specification. (markt) -
  • -
-
-

2017-09-19 Tomcat 9.0.0.M27 (markt)

-

Catalina

-
    -
  • Fix: - Before generating an error page in the ErrorReportValve, - check to see if I/O is still permitted for the associated connection - before generating the error page so that the page generation can be - skipped if the page is never going to be sent. (markt) -
  • -
  • Add: - 61189: Add the ability to set environment variables for - individual CGI scripts. Based on a patch by jm009. (markt) -
  • -
  • Fix: - 61210: When running under a SecurityManager, do not print a - warning about not being able to read a logging configuration file when - that file does not exist. (markt) -
  • -
  • Add: - 61280: Add RFC 7617 support to the - BasicAuthenticator. Note that the default configuration - does not change the existing behaviour. (markt) -
  • -
  • Fix: - 61424: Avoid a possible StackOverflowError when - running under a SecurityManager and using - Subject.doAs(). (markt) -
  • -
  • Add: - When running under Java 9 or later, and the - urlCacheProtection option of the - JreMemoryLeakPreventionListener is enabled, use the API - added in Java 9 to only disable the caching for JAR URL connections. - (markt) -
  • -
  • Add: - 61489: When using the CGI servlet, make the generation of - command line arguments from the query string (as per section 4.4 of RFC - 3875) optional and disabled by default. Based on a patch by jm009. - (markt) -
  • -
  • Fix: - 61503: This corrects a potential regression in the fix for - 60940 with an alternative solution that adds the - JarEntry objects normally skipped by a - JarInputStream only if those entries exist. (markt) -
  • -
-
-

Coyote

-
    -
  • Update: - The minimum required Tomcat Native version has been increased to 1.2.14. - This version includes a new API needed for correct client certificate - support when using a Java connector with OpenSSL TLS implementation and - support for the SSL_CONF OpenSSL API. (rjung) -
  • -
  • Add: - Add support for the OpenSSL SSL_CONF API when using - TLS with OpenSSL implementation. It can be used by adding - OpenSSLConf elements underneath SSLHostConfig. - The new element contains a list of OpenSSLConfCmd elements, - each with the attributes name and value. - (rjung) -
  • -
  • Fix: - When using a Java connector in combination with the OpenSSL TLS - implementation, do not configure each SSL connection object via - the OpenSSLEngine. For OpenSSL the SSL object inherits its - settings from the SSL_CTX which we have already configured. - (rjung) -
  • -
  • Fix: - When using JSSE TLS configuration with the OpenSSL implementation and - client certificates: include client CA subjects in the TLS handshake - so that the client can choose an appropriate client certificate to - present. (rjung) -
  • -
  • Fix: - If an invalid option is specified for the - certificateVerification attribute of an - SSLHostConfig element, treat it as required - which is the most secure / restrictive option in addition to reporting - the configuration error. (markt) -
  • -
  • Fix: - Improve the handling of client disconnections during the TLS - renegotiation handshake. (markt) -
  • -
  • Fix: - Prevent exceptions being thrown during normal shutdown of NIO - connections. This enables TLS connections to close cleanly. (markt) -
  • -
  • Fix: - Fix possible race condition when setting IO listeners on an upgraded - connection. (remm) -
  • -
  • Fix: - Ensure that the APR/native connector uses blocking I/O for TLS - renegotiation. (markt) -
  • -
  • Fix: - 48655: Enable Tomcat to shutdown cleanly when using sendfile, - the APR/native connector and a multi-part download is in progress. - (markt) -
  • -
  • Fix: - 58244: Handle the case when OpenSSL resumes a TLS session - using a ticket and the full client certificate chain is not available. - In this case the client certificate without the chain will be presented - to the application. (markt) -
  • -
  • Fix: - Improve the warning message when JSSE and OpenSSL configuration styles - are mixed on the same SSLHostConfig. (markt) -
  • -
  • Fix: - 61415: Fix TLS renegotiation with OpenSSL based connections - and session caching. (markt) -
  • -
  • Fix: - Delay checking that the configured attributes for an - SSLHostConfig instance are consistent with the configured - SSL implementation until Connector start to avoid incorrect - warnings when the SSL implementation changes during initialisation. - (markt) -
  • -
  • Fix: - 61450: Fix default key alias algorithm. (remm) -
  • -
  • Fix: - 61451: Correct a regression in the fix to enable the use of - Java key stores that contained multiple keys that did not all have the - same password. The regression broke support for any key store that did - not store keys in PKCS #8 format such as hardware key stores and Windows - key stores. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 60523: Reduce the number of packets used to send WebSocket - messages by not flushing between the header and the payload when the - two are written together. (markt) -
  • -
  • Fix: - 61491: When using the permessage-deflate - extension, correctly handle the sending of empty messages after - non-empty messages to avoid the IllegalArgumentException. - (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Show connector cipher list in the manager web application in the - correct cipher order. (rjung) -
  • -
-
-

Tribes

-
    -
  • Fix: - To avoid unexpected session timeout notification from backup session, - update the access time when receiving the map member notification - message. (kfujino) -
  • -
  • Fix: - Add member info to the log message when the failure detection check - fails in TcpFailureDetector. (kfujino) -
  • -
  • Fix: - Avoid Ping timeout until the added map member by receiving - MSG_START message is completely started. (kfujino) -
  • -
  • Fix: - When sending a channel message, make sure that the Sender has connected. - (kfujino) -
  • -
  • Fix: - Correct the backup node selection logic that node 0 is returned twice - consecutively. (kfujino) -
  • -
  • Fix: - Fix race condition of responseMap in - RpcChannel. (kfujino) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - 61391: Ensure that failed queries are logged if the - SlowQueryReport interceptor is configured to do so and the - connection has been abandoned. Patch provided by Craig Webb. (markt) -
  • -
  • Fix: - 61425: Ensure that transaction of idle connection has - terminated when the testWhileIdle is set to - true and defaultAutoCommit is set to - false. Patch provided by WangZheng. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - 61419: Replace a Unix style comment in the DOS bat file - catalina.bat with the correct rem markup. - (rjung) -
  • -
  • Fix: - 61439: Remove the Java Annotation API classes from - tomcat-embed-core.jar and package them in a separate JAR in the - embedded distribution to provide end users with greater flexibility to - handle potential conflicts with the JRE and/or other JARs. (markt) -
  • -
  • Fix: - 61441: Improve the detection of JAVA_HOME by the - daemon.sh script when running on a platform where Java has - been installed from an RPM. (rjung) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.14 to - pick up the latest Windows binaries built with APR 1.6.2 and OpenSSL - 1.0.2l. (markt) -
  • -
  • Update: - 61599: Update to Commons Daemon 1.1.0 for improved Java 9 - support. (markt) -
  • -
-
-

2017-08-08 Tomcat 9.0.0.M26 (markt)

-

Catalina

-
    -
  • Fix: - Correct multiple regressions in the fix for 49464 that could - corrupt static content served by the DefaultServlet.(markt) -
  • -
  • Fix: - Correct a bug in the PushBuilder implementation that - meant push URLs containing %nn sequences were not correctly - decoded. Identified by FindBugs. (markt) -
  • -
  • Add: - 61164: Add support for the %X pattern in the - AccessLogValve that reports the connection status at the - end of the request. Patch provided by Zemian Deng. (markt) -
  • -
  • Fix: - 61351: Correctly handle %nn decoding of URL patterns in - web.xml and similar locations that may legitimately contain characters - that are not permitted by RFC 3986. (markt) -
  • -
  • Add: - 61366: Add a new attribute, localDataSource, to - the JDBCStore that allows the Store to be configured to use - a DataSource defined by the web application rather than the default of - using a globally defined DataSource. Patch provided by Jonathan - Horowitz. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - 61086: Ensure to explicitly signal an empty request body for - HTTP 205 responses. Additional fix to r1795278. Based on a patch - provided by Alexandr Saperov. (violetagg) -
  • -
  • Update: - 61345: Add a server listener that can be used to do system - property replacement from the property source configured in the - digester. (remm) -
  • -
  • Add: - Add additional logging to record problems that occur while waiting for - the NIO pollers to stop during the Connector stop process. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 61364: Ensure that files are closed after detecting encoding - of JSPs so that files do not remain locked by the file system. (markt) -
  • -
-
-

WebSocket

-
    -
  • Add: - 57767: Add support to the WebSocket client for following - redirects when attempting to establish a WebSocket connection. Patch - provided by J Fernandez. (markt) -
  • -
-
-

2017-07-28 Tomcat 9.0.0.M25 (markt)

-

Catalina

-
    -
  • Fix: - Performance improvements for service loader look-ups (and look-ups of - other class loader resources) when the web application is deployed in a - packed WAR file. (markt) -
  • -
  • Fix: - 60963: Add ExtractingRoot, a new - WebResourceRoot implementation that extracts JARs to the - work directory for improved performance when deploying packed WAR files. - (markt) -
  • -
  • Fix: - 61253: Add warn message when Digester.updateAttributes - throws an exception instead of ignoring it. (csutherl) -
  • -
  • Fix: - Correct a further regression in the fix for 49464 that could - cause an byte order mark character to appear at the start of content - included by the DefaultServlet. (markt) -
  • -
  • Fix: - 61313: Make the read timeout configurable in the - JNDIRealm and ensure that a read timeout will result in an - attempt to fail over to the alternateURL. Based on patches by Peter - Maloney and Felix Schumacher. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Correct the documentation for how StandardRoot is - configured. (markt) -
  • -
-
-

Other

-
    -
  • Fix: - 61316: Fix corruption of UTF-16 encoded source files in - released source distributions. (markt) -
  • -
-
-

not released Tomcat 9.0.0.M24 (markt)

-

Catalina

-
    -
  • Add: - 52924: Add support for a Tomcat specific deployment - descriptor, /WEB-INF/tomcat-web.xml. This descriptor has an - identical format to /WEB-INF/web.xml. The Tomcat descriptor - takes precedence over any settings in conf/web.xml but does - not take precedence over any settings in /WEB-INF/web.xml. - (markt) -
  • -
  • Fix: - 61232: When log rotation is disabled only one separator will - be used when generating the log file name. For example if the prefix is - catalina. and the suffix is .log then the log - file name will be catalina.log instead of - catalina..log. Patch provided by Katya Stoycheva. - (violetagg) -
  • -
  • Fix: - 61264: Correct a regression in the refactoring to use - Charset rather than String to store request - character encoding that prevented getReader() throwing an - UnsupportedEncodingException if the user agent specifies - an unsupported character encoding. (markt) -
  • -
  • Fix: - Correct a regression in the fix for 49464 that could cause an - incorrect Content-Length header to be sent by the - DefaultServlet if the encoding of a static is not - consistent with the encoding of the response. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Enable TLS connectors to use Java key stores that contain multiple keys - where each key has a separate password. Based on a patch by Frank - Taffelt. (markt) -
  • -
  • Fix: - Improve the handling of HTTP/2 stream resets due to excessive headers - when a continuation frame is used. (markt) -
  • -
-
-

Jasper

-
    -
  • Add: - 53031: Add support for the fork option when - compiling JSPs with the Jasper Ant task and javac. (markt) -
  • -
-
-

Other

-
    -
  • Add: - 52791: Add the ability to set the defaults used by the - Windows installer from a configuration file. Patch provided by Sandra - Madden. (markt) -
  • -
-
-

not released Tomcat 9.0.0.M23 (markt)

-

Catalina

-
    -
  • Fix: - 49464: Improve the Default Servlet's handling of static files - when the file encoding is not compatible with the required response - encoding. (markt) -
  • -
  • Fix: - 61214: Remove deleted attribute servlets from - the Context MBean description. Patch provided by Alexis Hassler. (markt) -
  • -
  • Fix: - 61215: Correctly define addConnectorPort and - invalidAuthenticationWhenDeny in the - mbean-descriptors.xml file for the - org.apache.catalina.valves package so that the attributes - are accessible via JMX. (markt) -
  • -
  • Fix: - 61216: Improve layout for CompositeData and - TabularData when viewing via the JMX proxy servlet. Patch - provided by Alexis Hassler. (markt) -
  • -
  • Fix: - Additional permission for deleting files is granted to JULI as it is - required by FileHandler when running under a Security Manager. The - thread that cleans the log files is marked as daemon thread. - (violetagg) -
  • -
  • Fix: - 61229: Correct a regression in 9.0.0.M21 that broke WebDAV - handling for resources with names that included a & - character. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Restore the ability to configure support for SSLv3. Enabling this - protocol will trigger a warning in the logs since it is known to be - insecure. (markt) -
  • -
  • Add: - Add LoadBalancerDrainingValve, a Valve designed to reduce the amount of - time required for a node to drain its authenticated users. (schultz) -
  • -
  • Fix: - Do not log a warning when a null session is returned for an - OpenSSL based TLS session since this is expected when session tickets - are enabled. (markt) -
  • -
  • Fix: - When the access log valve logs a TLS related request attribute and the - NIO2 connector is used with OpenSSL, ensure that the TLS attributes are - available to the access log valve when the connection is closing. - (markt) -
  • -
  • Fix: - 60461: Sync SSL session access for the APR connector. (remm) -
  • -
  • Fix: - 61224: Make the GlobalRequestProcessor MBean - attributes read-only. Patch provided by Alexis Hassler. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 49176: When generating JSP runtime error messages that quote - the relevant JSP source code, switch from using the results of the JSP - page parsing process to using the JSR 045 source map data to identify - the correct part of the JSP source from the stack trace. This - significantly reduces the memory footprint of Jasper in development - mode, provides a small performance improvement for error page generation - and enables source quotes to continue to be provided after a Tomcat - restart. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Remove references to the Loader attribute - searchExternalFirst from the documentation since the - attribute is no longer supported. (markt) -
  • -
-
-

Tribes

-
    -
  • Add: - 51513: Add support for the compressionMinSize - attribute to the GzipInterceptor, add optional statistics - collection and expose the Interceptor over JMX. Based on a patch by - Christian Stöber. (markt) -
  • -
  • Add: - 61127Allow human-readable names for channelSendOptions and - mapSendOptions. Patch provided by Igal Sapir. (schultz) -
  • -
-
-

Other

-
    -
  • Code: - Restore the local definition of the web service annotations since the - JRE provided versions are deprecated and Java 9 does not provide them by - default. (markt) -
  • -
  • Fix: - Add necessary Java 9 configuration options to the startup scripts to - prevent warnings being generated on web application stop. (markt) -
  • -
-
-

2017-06-26 Tomcat 9.0.0.M22 (markt)

-

Catalina

-
    -
  • Fix: - 48543: Add the option to specify an alternative file name for - the catalina.config system property. Also document that - relative, as well as absolute, URLs are permitted. (markt) -
  • -
  • Fix: - 61072: Respect the documentation statements that allow - using the platform default secure random for session id generation. - (remm) -
  • -
  • Fix: - Correct the javadoc for - o.a.c.connector.CoyoteAdapter#parseSessionCookiesId. - Patch provided by John Andrew (XUZHOUWANG) via Github. (violetagg) -
  • -
  • Fix: - 61101: CORS filter should set Vary header in response. - Submitted by Rick Riemer. (remm) -
  • -
  • Add: - 61105: Add a new JULI FileHandler configuration for - specifying the maximum number of days to keep the log files. By default - the log files will be kept 90 days as configured in - logging.properties. (violetagg) -
  • -
  • Update: - Update the Servlet 4.0 implementation to add support for setting - trailer fields for HTTP responses. (markt) -
  • -
  • Fix: - 61125: Ensure that WarURLConnection returns the - correct value for calls to getLastModified() as this is - required for the correct detection of JSP modifications when the JSP is - packaged in a WAR file. (markt) -
  • -
  • Fix: - Improve the SSLValve so it is able to handle client - certificate headers from Nginx. Based on a patch by Lucas Ventura Carro. - (markt) -
  • -
  • Fix: - 61134: Do not use '[' and ']' symbols around substituted - text fragments when generating the default error pages. Patch provided - by Katya Todorova. (violetagg) -
  • -
  • Fix: - 61154: Allow the Manager and Host Manager web applications to - start by default when running under a security manager. This was - accomplished by adding a custom permission, - org.apache.catalina.security.DeployXmlPermission, that - permits an application to use a META-INF/context.xml file - and then granting that permission to the Manager and Host Manager. - (markt) -
  • -
  • Fix: - 61173: Polish the javadoc for - o.a.catalina.startup.Tomcat. Patch provided by - peterhansson_se. (violetagg) -
  • -
  • Add: - A new configuration property crawlerIps is added to the - o.a.catalina.valves.CrawlerSessionManagerValve. Using this - property one can specify a regular expression that will be used to - identify crawlers based on their IP address. Based on a patch provided - by Tetradeus. (violetagg) -
  • -
  • Fix: - 61180: Log a warning message rather than an information - message if it takes more than 100ms to initialised a - SecureRandom instance for a web application to use to - generate session identifiers. Patch provided by Piotr Chlebda. (markt) -
  • -
  • Fix: - 61185: When an asynchronous request is dispatched via - AsyncContext.dispatch() ensure that - getRequestURI() for the dispatched request matches that of - the original request. (markt) -
  • -
  • Fix: - 61197: Ensure that the charset name used in the - Content-Type header has exactly the same form as that - provided by the application. This reverts a behavioural change in - 9.0.0.M21 that caused problems for some clients. (markt) -
  • -
  • Fix: - 61201: Ensure that the SCRIPT_NAME environment - variable for CGI executables is populated in a consistent way regardless - of how the CGI servlet is mapped to a request. (markt) -
  • -
  • Fix: - Ensure to send a space between trailer field name and field value - for HTTP responses trailer fields. (huxing) -
  • -
-
-

Coyote

-
    -
  • Fix: - 61086: Explicitly signal an empty request body for HTTP 205 - responses. (markt) -
  • -
  • Fix: - 61120: Do not ignore path parameters when processing HTTP/2 - requests. (markt) -
  • -
  • Fix: - Revert a change introduced in the fix for bug 60718 that - changed the status code recorded in the access log when the client - dropped the connection from 200 to 500. (markt) -
  • -
  • Fix: - Make asynchronous error handling more robust. In particular ensure that - onError() is called for any registered - AsyncListeners after an I/O error on a non-container - thread. (markt) -
  • -
  • Fix: - Add additional syncs to the SSL session object provided by the OpenSSL - engine so that a concurrent destruction cannot cause a JVM crash. - (remm) -
  • -
-
-

Jasper

-
    -
  • Fix: - 44787: Improve error message when JSP compiler configuration - options are not valid. (markt) -
  • -
  • Add: - 45931: Extend Jasper's timeSpaces option to add - support for single which replaces template text that - consists entirely of whitespace with a single space character. Based on - a patch by Meetesh Karia. (markt) -
  • -
  • Fix: - 53011: When pre-compiling with JspC, report all compilation - errors rather than stopping after the first error. A new option - -failFast can be used to restore the previous behaviour of - stopping after the first error. Based on a patch provided by Marc Pompl. - (markt) -
  • -
  • Fix: - 61137: j.s.jsp.tagext.TagLibraryInfo#uri and - j.s.jsp.tagext.TagLibraryInfo#prefix fields should not be - final. Patch provided by Katya Todorova. (violetagg) -
  • -
-
-

WebSocket

-
    -
  • Fix: - Correct the log message when a MessageHandler for - PongMessage does not implement - MessageHandler.Whole. (rjung) -
  • -
  • Fix: - Improve thread-safety of Futures used to report the result - of sending WebSocket messages. (markt) -
  • -
  • Fix: - 61183: Correct a regression in the previous fix for - 58624 that could trigger a deadlock depending on the locking - strategy employed by the client code. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Better document the meaning of the trimSpaces option for Jasper. (markt) -
  • -
  • Fix: - 61150: Configure the Manager and Host-Manager web - applications to permit serialization and deserialization of - CRSFPreventionFilter related session objects to avoid warning messages - and/or stack traces on web application stop and/or start when running - under a security manager. (markt) -
  • -
  • Fix: - Correct the TLS configuration documentation to remove SSLv2 and SSLv3 - from the list of supported protocols. (markt) -
  • -
-
-

Other

-
    -
  • Add: - 45832: Add HTTP DIGEST authentication support to the Catalina - Ant tasks used to communicate with the Manager application. (markt) -
  • -
  • Fix: - 45879: Add the RELEASE-NOTES file to the root of - the installation created by the Tomcat installer for Windows to make it - easier for users to identify the installed Tomcat version. (markt) -
  • -
  • Fix: - 61055: Clarify the code comments in the rewrite valve to make - clear that there are no plans to provide proxy support for this valve - since Tomcat does not have proxy capabilities. (markt) -
  • -
  • Fix: - 61076: Document the altDDName attribute for the - Context element. (markt) -
  • -
  • Fix: - Correct typo in Jar Scan Filter Configuration Reference. - Issue reported via comments.apache.org. (violetagg) -
  • -
  • Fix: - Correct the requirement for the minimum Java SE version in Application - Developer's Guide. Issue reported via comments.apache.org. (violetagg) -
  • -
  • Fix: - 61145: Add missing @Documented annotation to - annotations in the annotations API. Patch provided by Katya Todorova. - (markt) -
  • -
  • Fix: - 61146: Add missing lookup() method to - @EJB annotation in the annotations API. Patch provided by - Katya Todorova. (markt) -
  • -
  • Fix: - Correct typo in Context Container Configuration Reference. - Patch provided by Katya Todorova. (violetagg) -
  • -
-
-

2017-05-10 Tomcat 9.0.0.M21 (markt)

-

General

-
    -
  • Add: - Allow to exclude JUnit test classes using the build property - test.exclude and document the property in - BUILDING.txt. (rjung) -
  • -
-
-

Catalina

-
    -
  • Fix: - Review those places where Tomcat re-encodes a URI or URI component and - ensure that that correct encoding (path differs from query string) is - applied and that the encoding is applied consistently. (markt) -
  • -
  • Fix: - Avoid a NullPointerException when reading attributes for a - initialised HTTP connector where TLS is enabled. (markt) -
  • -
  • Fix: - Always quote the hostName of an SSLHostConfig - element when using it as part of the JMX object name to avoid errors that - prevent the associated TLS connector from starting if a wild card - hostName is configured (because * is a - reserved character for JMX object names). (markt) -
  • -
  • Update: - Update the default URIEncoding for a Connector - to UTF-8 as required by the Servlet 4.0 specification. - (markt) -
  • -
  • Code: - Switch to using Charset rather than String to - store encoding settings (including for configuration and for the - Content-Type header) to reduce the number of places the - associated Charset needs to be looked up. (markt) -
  • -
  • Fix: - Use a more reliable mechanism for the DefaultServlet when - determining if the current request is for custom error page or not. - (markt) -
  • -
  • Fix: - Ensure that when the Default or WebDAV servlets process an error - dispatch that the error resource is processed via the - doGet() method irrespective of the method used for the - original request that triggered the error. (markt) -
  • -
  • Fix: - If a static custom error page is specified that does not exist or cannot - be read, ensure that the intended error status is returned rather than a - 404 or 403. (markt) -
  • -
  • Fix: - When the WebDAV servlet is configured and an error dispatch is made to a - custom error page located below WEB-INF, ensure that the - target error page is displayed rather than a 404 response. (markt) -
  • -
  • Update: - Update the Servlet 4.0 implementation to add support for obtaining - trailer fields from chunked HTTP requests. (markt) -
  • -
  • Add: - 61047: Add MIME mapping for woff2 fonts in the default - web.xml. Patch provided by Justin Williamson. (violetagg) -
  • -
  • Fix: - Correct the logic that selects the encoding to use to decode the query - string in the SSIServletExternalResolver so that the - useBodyEncodingForURI attribute of the - Connector is correctly taken into account. (markt) -
  • -
  • Fix: - Within the Expires filter, make the content type value specified with the - ExpiresByType parameter, case insensitive. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - When a TrustManager is configured that does not support - certificateVerificationDepth only log a warning about that - lack of support when certificateVerificationDepth has been - explicitly set. (markt) -
  • -
  • Fix: - 60970: Extend the fix for large headers to push requests. - (markt) -
  • -
  • Fix: - Do not include a Date header in HTTP/2 responses with - status codes less than 200. (markt) -
  • -
  • Fix: - When sending an HTTP/2 push promise with the NIO2 connector, the pushed - stream ID should only be included with the initial push promise frame - and not any subsequent continuation frames. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - When no BOM is present and an encoding is detected, do not skip the - bytes used to detect the encoding since they are not part of a BOM. - (markt) -
  • -
  • Update: - 61057: Update to Eclipse JDT Compiler 4.6.3. (violetagg) -
  • -
  • Fix: - 61065: Ensure that once the class is resolved by - javax.el.ImportHandler#resolveClass it will be cached with - the proper name. (violetagg) -
  • -
-
-

WebSocket

-
    -
  • Add: - Introduce new API o.a.tomcat.websocket.WsSession#suspend/ - o.a.tomcat.websocket.WsSession#resume that can be used to - suspend/resume reading of the incoming messages. (violetagg) -
  • -
  • Fix: - 61003: Ensure the flags for reading/writing in - o.a.t.websocket.AsyncChannelWrapperSecure are correctly - reset even if some exceptions occurred during processing. (markt/violetagg) -
  • -
-
-

Web Applications

-
    -
  • Add: - Add documents for maxIdleTime attribute to Channel Receiver - docs. (kfujino) -
  • -
-
-

Tribes

-
    -
  • Add: - Add features to get the statistics of the thread pool of the - Receiver component and - MessageDispatchInterceptor. These statistics information - can be acquired via JMX. (kfujino) -
  • -
  • Add: - Add maxIdleTime attribute to NioReceiverMBean - in order to expose to JMX. (kfujino) -
  • -
  • Add: - Add JMX support for Channel Interceptors. The Interceptors - that implement JMX support are TcpFailureDetector, - ThroughputInterceptor, TcpPingInterceptor, - StaticMembershipInterceptor, - MessageDispatchInterceptor and - DomainFilterInterceptor. (kfujino) -
  • -
-
-

Other

-
    -
  • Add: - Modify the Ant build script used to publish to a Maven repository so - that it no longer requires artifacts to be GPG signed. This is make it - possible for the CI system to upload snapshot builds to the ASF Maven - repository. (markt) -
  • -
-
-

2017-04-18 Tomcat 9.0.0.M20 (markt)

-

Catalina

-
    -
  • Update: - Update the Servlet 4.0 API implementation to reflect the change in - method name from getPushBuilder() to - newPushBuilder(). (markt) -
  • -
  • Fix: - Correct various edge cases in the new HTTP Host header validation - parser. Patch provided by Katya Todorova. (martk) -
  • -
  • Fix: - Correct a regression in the X to comma refactoring that broke JMX - operations that take parameters. (markt) -
  • -
  • Fix: - Avoid a NullPointerException when reading attributes for a - running HTTP connector where TLS is not enabled. (markt) -
  • -
  • Fix: - 47214: Refactor code so that explicitly referenced inner - classes are given explicit names rather than being anonymous. (markt) -
  • -
  • Fix: - 59825: Log a message that lists the components in the - processing chain that do not support async processing when a call to - ServletRequest.startAsync() fails. (markt) -
  • -
  • Fix: - 60940: Improve the handling of the META-INF/ and - META-INF/MANIFEST.MF entries for Jar files located in - /WEB-INF/lib when running a web application from a packed - WAR file. (markt) -
  • -
  • Fix: - Pre-load the ExceptionUtils class. Since the class is used - extensively in error handling, it is prudent to pre-load it to avoid any - failure to load this class masking the true problem during error - handling. (markt) -
  • -
  • Fix: - Avoid potential NullPointerExceptions related to access - logging during shutdown, some of which have been observed when running - the unit tests. (markt) -
  • -
  • Fix: - When there is no javax.servlet.WriteListener registered - then a call to javax.servlet.ServletOutputStream#isReady - will return false instead of throwing - IllegalStateException. (violetagg) -
  • -
  • Fix: - When there is no javax.servlet.ReadListener registered - then a call to javax.servlet.ServletInputStream#isReady - will return false instead of throwing - IllegalStateException. (violetagg) -
  • -
-
-

Coyote

-
    -
  • Fix: - Align cipher configuration parsing with current OpenSSL master. (markt) -
  • -
  • Fix: - 60970: Fix infinite loop if application tries to write a - large header to the response when using HTTP/2. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 47214: Refactor code so that explicitly referenced inner - classes are given explicit names rather than being anonymous. (markt) -
  • -
  • Fix: - 60925: Improve the handling of access to properties defined - by interfaces when a BeanELResolver is used under a - SecurityManager. (markt) -
  • -
-
-

Tribes

-
    -
  • Add: - Add JMX support for Tribes components. (kfujino) -
  • -
-
-

jdbc-pool

-
    -
  • Code: - Refactor the creating a constructor for a proxy class to reduce - duplicate code. (kfujino) -
  • -
  • Fix: - In StatementFacade, the method call on the statements that - have been closed throw SQLException rather than - NullPointerException. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - 60932: Correctly escape single quotes when used in i18n - messages. Based on a patch by Michael Osipov. (markt) -
  • -
  • Code: - Review i18n property files, remove unnecessary escaping and consistently - use [...] to delimit inserted values. (markt) -
  • -
  • Fix: - Update the custom Ant task that integrates with the Symantec code - signing service to use the now mandatory 2-factor authentication. - (markt) -
  • -
  • Code: - Refactoring in preparation for Java 9. Refactor to avoid using some - methods that will be deprecated in Java 9 onwards. (markt) -
  • -
-
-

2017-03-30 Tomcat 9.0.0.M19 (markt)

-

Catalina

-
    -
  • Add: - 54618: Add support to the - HttpHeaderSecurityFilter for the HSTS preload parameter. - (markt) -
  • -
  • Fix: - Correct a bug in the implementation of the Servlet 4.0 feature that - allows specifying a default request and/or response character encoding - per web application. null values passed via the - programmatic interface no longer trigger a - NullPointerException. (markt) -
  • -
  • Fix: - Correct a potential exception during shutdown when one or more - Containers are configured with a value of 1 for startStopThreads. - (markt) -
  • -
  • Fix: - 60853: Expose the SSLHostConfig and - SSLHostConfigCertificate objects via JMX. (markt) -
  • -
  • Fix: - 60876: Ensure that Set-Cookie headers generated - by the Rfc6265CookieProcessor are aligned with the - specification. Patch provided by Jim Griswold. (markt) -
  • -
  • Fix: - 60882: Fix a NullPointerException when obtaining - a RequestDispatcher for a request that will not have any - pathInfo associated with it. This was a regression in the changes in - 9.0.0.M18 for the Servlet 4.0 API changes. (markt) -
  • -
  • Update: - Align PushBuilder API with changes from the Servlet expert - group. (markt) -
  • -
  • Update: - Align web.xml parsing rules with changes from the Servlet expert group - for <request-character-encoding> and - <response-character-encoding>. (markt) -
  • -
  • Code: - Refactor the various implementations of X to comma separated list to a - single utility class and update the code to use the new utility class. - (markt) -
  • -
  • Fix: - 60911: Ensure NPE will not be thrown when looking for SSL - session ID. Based on a patch by Didier Gutacker. (violetagg) -
  • -
-
-

Coyote

-
    -
  • Fix: - Add async based IO groundwork for HTTP/2. (remm) -
  • -
  • Fix: - Fix HTTP/2 incorrect input unblocking on EOF. (remm) -
  • -
  • Fix: - Close the connection sooner if an event occurs for a current connection - that is not consistent with the current state of that connection. - (markt) -
  • -
  • Fix: - Speed up shutdown when using multiple acceptor threads by ensuring that - the code that unlocks the acceptor threads correctly handles the case - where there are multiple threads. (markt) -
  • -
  • Fix: - 60851: Add application/xml and - application/json to the default list of compressible MIME - types. Patch by Michael Osipov. (markt) -
  • -
  • Fix: - 60852: Correctly spell compressible when used in - configuration attributes and internal code. Based on a patch by Michael - Osipov. (markt) -
  • -
  • Fix: - 60900: Avoid a NullPointerException in the APR - Poller if a connection is closed at the same time as new data arrives on - that connection. (markt) -
  • -
  • Fix: - Improve HPACK specification compliance by fixing some test failures - reported by the h2spec tool written by Moto Ishizawa. (markt) -
  • -
  • Fix: - Improve HTTP/2 specification compliance by fixing some test failures - reported by the h2spec tool written by Moto Ishizawa. (markt) -
  • -
  • Fix: - 60918: Fix sendfile processing error that could lead to - subsequent requests experiencing an IllegalStateException. - (markt) -
  • -
  • Fix: - Improve sendfile handling when requests are pipelined. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 60844: Correctly handle the error when fewer parameter values - than required by the method are used to invoke an EL method expression. - Patch provided by Daniel Gray. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - 60764: Implement equals() and - hashCode() in the StatementFacade in order to - enable these methods to be called on the closed statements if any - statement proxy is set. This behavior can be changed with - useStatementFacade attribute. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Refactor the build script and the NSIS installer script so that either - NSIS 2.x or NSIS 3.x can be used to build the installer. This is - primarily to re-enable building the installer on the Linux based CI - system where the combination of NSIS 3.x and wine leads to failed - installer builds. (markt) -
  • -
-
-

2017-03-13 Tomcat 9.0.0.M18 (markt)

-

Catalina

-
    -
  • Fix: - 60469: Refactor RealmBase for better code re-use - when implementing Realms that use a custom Principal. - (markt) -
  • -
  • Fix: - 60490: Various formatting and layout improvements for the - ErrorReportValve. Patch provided by Michael Osipov. (markt) -
  • -
  • Fix: - 60573: Remove the reason phrase when sending a - 100 response status for consistency with other response - status lines. Patch provided by Michael Osipov. (markt) -
  • -
  • Update: - 60596: Improve performance of DefaultServlet when sendfile - feature is disabled on connector. (kkolinko) -
  • -
  • Code: - Make it easier for sub-classes of Tomcat to modify the - default web.xml settings by over-riding - getDefaultWebXmlListener(). Patch provided by Aaron - Anderson. (markt) -
  • -
  • Fix: - Reduce the contention in the default InstanceManager - implementation when multiple threads are managing objects and need to - reference the annotation cache. (markt) -
  • -
  • Fix: - 60623: When startStopThreads is 1 (or a special value that - is equivalent to 1) then rather than using an - ExecutorService to start the children of the current - component, the children will be started on the current thread. (markt) -
  • -
  • Code: - 60674: Remove final marker from - CorsFilter to enable sub-classing. (markt) -
  • -
  • Fix: - 60683: Security manager failure causing NPEs when doing IO - on some JVMs. (csutherl) -
  • -
  • Fix: - 60688: Update the internal fork of Apache Commons BCEL to - r1782855 to add early access Java 9 support to the annotation scanning - code. (markt) -
  • -
  • Fix: - 60694: Prevent NPE during authentication when no JASPIC - AuthConfigFactory is available. (markt) -
  • -
  • Fix: - 60697: When HTTP TRACE requests are disabled on the - Connector, ensure that the HTTP OPTIONS response from custom servlets - does not include TRACE in the returned Allow header. (markt) -
  • -
  • Fix: - 60718: Improve error handling for asynchronous processing and - correct a number of cases where the requestDestroyed() - event was not being fired and an entry wasn't being made in the access - logs. (markt) -
  • -
  • Fix: - 60720: Replace "WWW-Authenticate" literal with static final - AUTH_HEADER_NAME in SpnegoAuthenticator. Patch provided by Michael - Osipov. (violetagg) -
  • -
  • Fix: - The default JASPIC AuthConfigFactory now correctly notifies - registered RegistrationListeners when a new - AuthConfigProvider is registered. (markt) -
  • -
  • Code: - Improve the performance of AuthenticatorBase when there is - no JASPIC configuration available. (violetagg) -
  • -
  • Fix: - When HTTP TRACE requests are disabled on the Connector, ensure that the - HTTP OPTIONS response from the WebDAV servlet does not include - TRACE in the returned Allow header. (markt) -
  • -
  • Fix: - 60722: Take account of the - dispatchersUseEncodedPaths setting on the current - Context when generating paths for dispatches triggered - by AsyncContext.dispatch(). (markt) -
  • -
  • Fix: - 60728: Make the separator Tomcat uses in the Tomcat specific - war:file:... URL protocol customizable via a system - property. The separator is equivalent to the use of the ! - character in jar:file:... URLs. The default separator of - * remains unchanged. (markt) -
  • -
  • Update: - Update the Servlet 4.0 API implementation to align with the latest - proposals from the Servlet 4.0 expert group. This includes updates to - the new Servlet mapping API, new methods on the - ServletContext to make the available API more equivalent to - the deployment descriptor, updates to the HTTP push API and the ability - to set default request and response character encoding per web - application. Note that the Servlet 4.0 API is still a work in progress - and further changes are likely. (markt) -
  • -
  • Fix: - 60798: Correct a bug in the handling of JARs in unpacked WARs - that meant multiple attempts to read the same entry from a JAR in - succession would fail for the second and subsequent attempts. (markt) -
  • -
  • Fix: - 60808: Ensure that the Map returned by - ServletRequest.getParameterMap() is fully immutable. Based - on a patch provided by woosan. (markt) -
  • -
  • Fix: - 60824: Correctly cache the Subject in the - session - if there is a session - when running under a - SecurityManager. Patch provided by Jan Engehausen. (markt) -
  • -
  • Fix: - Ensure request and response facades are used when firing application - listeners. (markt/remm) -
  • -
-
-

Coyote

-
    -
  • Fix: - Improve handling of case when an HTTP/2 client sends more data that is - subject to flow control than the current window size allows. (markt) -
  • -
  • Fix: - Improve NIO2 look-ahead parsing of TLS client hello for SNI with large - client hello messages. (markt) -
  • -
  • Add: - Enable ALPN and also, therefore, HTTP/2 for the NIO and NIO2 HTTP - connectors when using the JSSE implementation for TLS when running on - Java 9. (markt) -
  • -
  • Fix: - Restore Java 9 direct byte buffer compatibility. (remm) -
  • -
  • Fix: - 59807: Provide a better error message when there is no - SSLHostConfig defined with a hostName that - matches the defaultSSLHostConfigName for the associated - Connector. (markt) -
  • -
  • Fix: - 60627: Modify the Rfc6265CookieProcessor so that - in addition to cookie headers that start with an explicit RFC 2109 - $Version=1, cookies that start with $Version=0 - are also parsed as RFC 2109 cookies. (markt) -
  • -
  • Fix: - Include the value of SslHostConfig.truststoreAlgorithm when - warning that the algorithm does not support the - certificateVerificationDepth configuration option. (markt) -
  • -
  • Fix: - Ensure that executor thread pools used with connectors pre-start the - configured minimum number of idle threads. (markt) -
  • -
  • Fix: - 60716: Add a new JSSE specific attribute, - revocationEnabled, to SSLHostConfig to permit - JSSE provider revocation checks to be enabled when no - certificateRevocationListFile has been configured. The - expectation is that configuration will be performed via a JSSE provider - specific mechanisms. (markt) -
  • -
  • Fix: - Modify the cookie header generated by the - Rfc6265CookieProcessor so it always sends an - Expires attribute as well as a Max-Age - attribute to avoid problems with Microsoft browsers that do not support - the Max-Age attribute. (markt) -
  • -
  • Fix: - 60761: Expose a protected getter and setter for - NioEndpoint.stopLatch to make the class easier to extend. - (markt) -
  • -
  • Fix: - Prevent blocking reads after a stream exception occurs with HTTP/2. - (remm) -
  • -
-
-

Jasper

-
    -
  • Fix: - Follow up to the fix for 58178. When creating the - ELContext for a tag file, ensure that any registered - ELContextListeners are fired. (markt) -
  • -
  • Fix: - Refactor code generated for JSPs to reduce the size of the code required - for tags. (markt) -
  • -
  • Fix: - Improve the error handling for simple tags to ensure that the tag is - released and destroyed once used. (remm, violetagg) -
  • -
  • Fix: - 60769: Correct a regression in the XML encoding detection - refactoring carried out for 9.0.0.M16 that incorrectly always used the - detected BOM encoding in preference to any encoding specified in the - prolog. (markt) -
  • -
-
-

Cluster

-
    -
  • Add: - Make the accessTimeout configurable in - BackupManager and ClusterSingleSignOn. The - accessTimeout is used as a timeout period for PING in - replication map. (kfujino) -
  • -
  • Fix: - 60806: To avoid ClassNotFoundException, make - sure that the web application class loader is passed to - ReplicatedContext. (kfujino) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 60617: Correctly create a CONNECT request when - establishing a WebSocket connection via a proxy. Patch provided by - Svetlin Zarev. (markt) -
  • -
-
-

Tribes

-
    -
  • Add: - Add log message that PING message has received beyond the timeout - period. (kfujino) -
  • -
  • Fix: - When a PING message that beyond the time-out period has been received, - make sure that valid member is added to the map membership. (kfujino) -
  • -
  • Fix: - Ensure that NoRpcChannelReply messages are not received on - RpcCallback. (kfujino) -
  • -
-
-

Web Applications

-
    -
  • Fix: - Add Specification and Javadoc references for JASPIC to the Docs - application. (csutherl) -
  • -
-
-

Other

-
    -
  • Fix: - Spelling corrections provided by Josh Soref. (violetagg) -
  • -
  • Code: - Remove local definition of web service annotations since these are - provided by the JRE. (markt) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.12 to - pick up the latest Windows binaries built with OpenSSL 1.0.2k. (violetagg) -
  • -
  • Add: - 60784: Update all unit tests that test the HTTP status line - to check for the required space after the status code. Patch provided by - Michael Osipov. (markt) -
  • -
-
-

2017-01-16 Tomcat 9.0.0.M17 (markt)

-

Catalina

-
    -
  • Add: - 60620: - Extend the JreMemoryLeakPreventionListener to provide - protection against ForkJoinPool.commonPool() related memory - leaks. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Ensure UpgradeProcessor instances associated with closed connections are - removed from the map of current connections to Processors. (markt) -
  • -
  • Fix: - Remove a workaround for a problem previously reported with WebSocket, - TLS and APR that treated some error conditions as not errors. The - original problem cannot be reproduced with the current code and the - work-around is now causing problems. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 60497: Follow up fix using a better variable name for the - tag reuse flag. (remm) -
  • -
  • Fix: - Revert use of try/finally for simple tags. (remm) -
  • -
-
-

WebSocket

-
    -
  • Fix: - Prevent potential processing loop on unexpected WebSocket connection - closure. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Add: - Enable reset the statistics without restarting the pool. (kfujino) -
  • -
-
-

Other

-
    -
  • Update: - Update the NSIS Installer used to build the Windows installer to version - 3.01. (markt) -
  • -
  • Fix: - Spelling corrections provided by Josh Soref. (violetagg) -
  • -
-
-

not released Tomcat 9.0.0.M16 (markt)

-

Catalina

-
    -
  • Add: - 53602: Add HTTP status code 451 (RFC 7725) to the list of - HTTP status codes recognised by the ErrorReportValve. (markt) -
  • -
  • Fix: - 60446: Handle the case where the stored user credential uses - a different key length than the length currently configured for the - CredentialHandler. Based on a patch by Niklas Holm. (markt) -
  • -
  • Update: - Update the warnings that reference required options for running on Java - 9 to use the latest syntax for those options. (markt) -
  • -
  • Fix: - 60513: Fix thread safety issue with RMI cleanup code. (remm) -
  • -
-
-

Coyote

-
    -
  • Fix: - Expand the search process for a server certificate when OpenSSL is used - with a JSSE connector and an explicit alias has not been configured. - (markt) -
  • -
  • Code: - Extract the common Acceptor code from each Endpoint into a new Acceptor - class that is used by all Endpoints. (markt) -
  • -
  • Fix: - 60450: Improve the selection algorithm for the default trust - store type for a TLS Virtual Host. In particular, don't use - PKCS12 as a default trust store type. Better document how - the default trust store type is selected for a TLS virtual host. (markt) -
  • -
  • Fix: - 60451: Correctly handle HTTP/2 header values that contain - characters with unicode code points in the range 128 to 255. Reject - with a clear error message HTTP/2 header values that contain characters - with unicode code points above 255. (markt) -
  • -
  • Fix: - Improve the logic that selects an address to use to unlock the Acceptor - to take account of platforms what do not listen on all local addresses - when configured with an address of 0.0.0.0 or - ::. (markt) -
  • -
  • Fix: - Correct a regression in the refactoring to make wider use of - ByteBuffer that caused an intermittent failure in the unit - tests. (markt) -
  • -
  • Fix: - 60482: HTTP/2 shouldn't do URL decoding on the query string. - (remm) -
  • -
  • Fix: - Fix an HTTP/2 compression error. Once a new size has been agreed for the - dynamic HPACK table, the next header block must begin with a dynamic - table update. (markt) -
  • -
  • Fix: - 60508: Set request start time for HTTP/2. (remm) -
  • -
  • Fix: - The default output buffer size for AJP connectors is now based on the - configured AJP packet size rather than the minimum permitted AJP packet - size. (markt) -
  • -
-
-

Jasper

-
    -
  • Update: - Implement a simpler JSP file encoding detector that delegates XML prolog - encoding detection to the JRE rather than using a custom XML parser. - (markt) -
  • -
  • Fix: - 60497: Restore previous tag reuse behavior following the use - of try/finally. (remm) -
  • -
  • Fix: - Improve the error handling for simple tags to ensure that the tag is - released and destroyed once used. (remm) -
  • -
-
-

WebSocket

-
    -
  • Fix: - Correctly handle blocking WebSocket writes when the write times out just - before the write is attempted. (markt) -
  • -
-
-

Web Applications

-
    -
  • Fix: - 60344: Add a note to BUILDING.txt regarding using the source - bundle with the correct line endings. (markt) -
  • -
  • Fix: - 60467: remove problematic characters from XML documentation. - Based upon a patch by Michael Osipov. (schultz) -
  • -
  • Add: - In the documentation web application, be explicit that clustering - requires a secure network for all of the cluster network traffic. - (markt) -
  • -
  • Update: - Update the ASF logos to the new versions. -
  • -
  • Fix: - 60468: Correct the format of the sample ISO-8601 date used - to report the build date for the documentation. Patch provided by - Michael Osipov. (markt) -
  • -
-
-

Other

-
    -
  • Update: - Update the ASF logos used in the Apache Tomcat installer for Windows to - use the new versions. -
  • -
-
-

2016-12-08 Tomcat 9.0.0.M15 (markt)

-

Other

-
    -
  • Code: - Increment version due a local build configuration error with 9.0.0.M14 - that wasn't caught until after digital signing had been completed - Signing requires unique names so a new tag was required. (markt) -
  • -
-
-

not released Tomcat 9.0.0.M14 (markt)

-

Catalina

-
    -
  • Update: - 60202: Add an available flag to realms, to indicate the - state, or the realm backend. Update lockout realm to only register - auth failures if the realm is available. (remm) -
  • -
  • Fix: - 60340: Readability improvements for CSS used in - DefaultServlet and ErrorReportValve. Patch provided by Michael - Osipov. (violetagg) -
  • -
  • Fix: - 60351: Delay creating META-INF/war-tracker file - until after the WAR has been expanded to address the case where the - Tomcat process terminates during the expansion. (markt) -
  • -
  • Fix: - Correctly generate URLs for resources located inside JARs that are - themselves located inside a packed WAR file. (markt) -
  • -
  • Fix: - Correctly handle the configClass attribute of a Host when - embedding Tomcat. (markt) -
  • -
  • Update: - 60368: Stop creating a default connector on start in - embedded mode. (remm) -
  • -
  • Fix: - 60379: Dispose of the GSS credential once it is no longer - required. Patch provided by Michael Osipov. (markt) -
  • -
  • Fix: - 60380: Ensure that a call to - HttpServletRequest#logout() triggers a call to - TomcatPrincipal#logout(). Based on a patch by Michael - Osipov. (markt) -
  • -
  • Fix: - 60381: Provide a standard toString() - implementation for components that implement Contained. - (markt) -
  • -
  • Fix: - 60387: Correct the javadoc for - o.a.catalina.AccessLog.setRequestAttributesEnabled. - The default value is different for the different implementations. - (violetagg) -
  • -
  • Code: - 60393: Use consistent parameter naming in implementations of - Realm#authenticate(GSSContext, boolean). (markt) -
  • -
  • Code: - Refactor the org.apache.naming package to reduce duplicate - code. Duplicate code identified by the Simian tool. (markt) -
  • -
  • Code: - Refactor the implementations of - HttpServletRequest#getRequestURL() to reduce duplicate - code. Duplicate code identified by the Simian tool. (markt) -
  • -
  • Code: - Refactor Catalina interfaces to make wider use of the - Contained interface and reduce duplication. (markt) -
  • -
  • Code: - Remove the getName() method from RealmBase - along with the various constants used by the sub-classes to store the - return value. (markt) -
  • -
  • Fix: - 60395: Log when an Authenticator passes an - incomplete GSSContext to a Realm since it indicates a bug - in the Authenticator. Patch provided by Michael Osipov. - (markt) -
  • -
  • Fix: - 60400: When expanding the buffer used for reading the - request body, ensure the read position will be restored to the - original one. (violetagg) -
  • -
  • Code: - Refactor the MBean implementations for the internal Tomcat components - to reduce code duplication. (markt) -
  • -
  • Fix: - 60410: Ensure that multiple calls to - JarInputStreamWrapper#close() do not incorrectly trigger - the closure of the underlying JAR or WAR file. (markt) -
  • -
  • Fix: - 60411: Implement support in the RewriteValve for - symbolic names to specify the redirect code to use when returning a - redirect response to the user agent. Patch provided by Michael Osipov. - (markt) -
  • -
  • Fix: - 60413: In the RewriteValve write empty capture - groups as the empty string rather than as "null" - when generating the re-written URL. Based on a patch by Michael Osipov. - (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - 60372: Ensure the response headers' buffer limit is reset to - the capacity of this buffer when IOException occurs while writing the - headers to the socket. (violetagg) -
  • -
  • Fix: - Ensure that the availability of configured upgrade protocols that - require ALPN is correctly reported during Tomcat start. (markt) -
  • -
  • Fix: - 60386: Implement a more sophisticated pruning algorithm for - removing closed streams from the priority tree to ensure that the tree - does not grow too large. (markt) -
  • -
  • Fix: - 60409: When unable to complete sendfile request, ensure the - Processor will be added to the cache only once. (markt/violetagg) -
  • -
  • Fix: - Ensure that the endpoint is able to unlock the acceptor thread during - shutdown if the endpoint is configured to listen to any local address - of a specific type such as 0.0.0.0 or ::. - (markt) -
  • -
  • Add: - Add a new configuration option, ipv6v6only to the APR - connectors that allows them to be configure to only accept IPv6 - connections when configured with an IPv6 address rather than the - default which is to accept IPv4 connections as well if the operating - system uses a dual network stack. (markt) -
  • -
  • Fix: - Improve the logic that unlocks the acceptor thread so a better choice is - made for the address to connect to when a connector is configured for - any local port. This reduces the likelihood of the unlock failing. - (markt) -
  • -
  • Fix: - 60436: Avoid a potential NPE when processing async timeouts. - (markt) -
  • -
  • Fix: - Reduce the window in which an async request that has just started - processing on a container thread remains eligible for an async timeout. - (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 60431: Improve handling of varargs in UEL expressions. Based - on a patch by Ben Wolfe. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Correct a typo in Host Configuration Reference. - Issue reported via comments.apache.org. (violetagg) -
  • -
  • Fix: - 60412: Add information on the comment syntax for the - RewriteValve configuration. (markt) -
  • -
-
-

Tribes

-
    -
  • Fix: - Reduce the warning logs for a message received from a different domain - in order to avoid excessive log outputs. (kfujino) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 60437: Avoid possible handshake overflows in the websocket - client. (remm) -
  • -
-
-

jdbc-pool

-
    -
  • Add: - 58816: Implement the statistics of jdbc-pool. The stats infos - are borrowedCount, returnedCount, - createdCount, releasedCount, - reconnectedCount, releasedIdleCount and - removeAbandonedCount. (kfujino) -
  • -
  • Fix: - 60194: If validationQuery is not specified, - connection validation is done by calling the isValid() - method. (kfujino) -
  • -
  • Fix: - 60398: Fix testcase of TestSlowQueryReport. - (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Allow customization of service.bat, such as heap memory size, service - startup mode and JVM args. Patch provided by isapir via Github. - (violetagg) -
  • -
  • Fix: - 60366: Change catalina.bat to use directly - LOGGING_MANAGER and LOGGING_CONFIG variables - in order to configure logging, instead of modifying - JAVA_OPTS. Patch provided by Petter Isberg. (violetagg) -
  • -
  • Fix: - 60383: JASPIC API is added as a dependency to the - org.apache.tomcat:tomcat-catalina maven artifact. - (violetagg) -
  • -
  • Fix: - Update the comments associated with the TLS Connector examples in - server.xml. (markt) -
  • -
  • Add: - New property is added test.verbose in order to control - whether the output of the tests is displayed on the console or not. - Patch provided by Emmanuel Bourg. (violetagg) -
  • -
  • Code: - TestOpenSSLCipherConfigurationParser.testSpecification - - if there are test failures, provide more detailed information. Patch - provided by Emmanuel Bourg. (violetagg) -
  • -
-
-

2016-11-08 Tomcat 9.0.0.M13 (markt)

-

Coyote

-
    -
  • Fix: - Check that threadPriority values used in AbstractProtocol are valid. - (fschumacher) -
  • -
-
-

not released Tomcat 9.0.0.M12 (markt)

-

Catalina

-
    -
  • Fix: - When creating a new Connector via JMX, ensure that both HTTP/1.1 and - AJP/1.3 connectors can be created. (markt) -
  • -
  • Fix: - Reduce multiple error messages when Connector fails to instantiate the - associated ProtocolHandler. (markt) -
  • -
  • Fix: - 60152: Provide an option for Connector Lifecycle exceptions - to be re-thrown rather than logged. This is controlled by the new - throwOnFailure attribute of the Connector. (markt) -
  • -
  • Fix: - Include the Context name in the log message when an item cannot be - added to the cache. (markt) -
  • -
  • Fix: - Exclude JAR files in /WEB-INF/lib from the static resource - cache. (markt) -
  • -
  • Fix: - When calling getResourceAsStream() on a directory, ensure - that null is returned. (markt) -
  • -
  • Fix: - 60161: Allow creating subcategories of the container logger, - and use it for the rewrite valve. (remm) -
  • -
  • Fix: - Correctly test for control characters when reading the provided shutdown - password. (markt) -
  • -
  • Fix: - 60297: Simplify connector creation in embedded mode. (remm) -
  • -
  • Fix: - Refactor creation of containers in embedded mode for more consistency - and flexibility. (remm) -
  • -
  • Add: - Log a warning if running on Java 9 with the ThreadLocal memory leak - detection enabled (the default) but without the command line option it - now requires. (markt) -
  • -
  • Fix: - When a Connector is configured to use an executor, ensure that the - StoreConfig component includes the executor name when writing the - Connector configuration. (markt) -
  • -
  • Fix: - When configuring the JMX remote listener, specify the allowed types for - the credentials. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Correct the HPACK header table size configuration that transposed the - client and server table sizes when creating the encoder and decoder. - (markt) -
  • -
  • Code: - Review HTTP/2 implementation removing unused code, reducing visibility - where possible and using final where appropriate. (markt) -
  • -
  • Fix: - Don't continue to process an HTTP/2 stream if it is reset during header - parsing. (markt) -
  • -
  • Fix: - HTTP/2 uses separate headers for each Cookie. As required by RFC 7540, - merge these into a single Cookie header before processing continues. - (markt) -
  • -
  • Fix: - Align the HTTP/2 implementation with the HTTP/1.1 implementation and - return a 500 response when an unhandled exception occurs during request - processing. (markt) -
  • -
  • Fix: - Correct the HTTP header parser so that DEL is not treated as a valid - token character. (markt) -
  • -
  • Add: - Add checks around the handling of HTTP/2 pseudo headers. (markt) -
  • -
  • Add: - Add support for trailer headers to the HTTP/2 implementation. (markt) -
  • -
  • Fix: - 60232: When processing headers for an HTTP/2 stream, ensure - that the read buffer is large enough for the header being processed. - (markt) -
  • -
  • Add: - Add configuration options to the HTTP/2 implementation to control the - maximum number of headers allowed, the maximum size of headers allowed, - the maximum number of trailer headers allowed, the maximum size of - trailer headers allowed and the maximum number of cookies allowed. - (markt) -
  • -
  • Fix: - Correctly differentiate between sending and receiving a reset frame when - tracking the state of an HTTP/2 stream. (markt) -
  • -
  • Code: - Remove the undocumented support for using the old Connector attribute - names backlog, soLinger and - soTimeout that were renamed several major versions ago. - (markt) -
  • -
  • Fix: - 60319: When using an Executor, disconnect it from the - Connector attributes maxThreads, - minSpareThreads and threadPriority to enable - the configuration settings to be consistently reported. These Connector - attributes will be reported as -1 when an Executor is in - use. The values used by the executor may be set and obtained via the - Executor. (markt) -
  • -
  • Fix: - If an I/O error occurs during async processing on a non-container - thread, ensure that the onError() event is triggered. - (markt) -
  • -
  • Fix: - Improve detection of I/O errors during async processing on non-container - threads and trigger async error handling when they are detected. (markt) -
  • -
  • Add: - Add additional checks for valid characters to the HTTP request line - parsing so invalid request lines are rejected sooner. (markt) -
  • -
-
-

Jasper

-
    -
  • Update: - Update to the Eclipse JDT Compiler 4.6.1. (markt) -
  • -
-
-

Web applications

-
    -
  • Add: - Add HTTP/2 configuration information to the documentation web - application. (markt) -
  • -
  • Fix: - Fix default value of validationInterval attribute in - jdbc-pool. (kfujino) -
  • -
  • Fix: - Correct a typo in CGI How-To. - Issue reported via comments.apache.org. (violetagg) -
  • -
-
-

Tribes

-
    -
  • Fix: - When the proxy node sends a backup retrieve message, ensure that using - the channelSendOptions that has been set rather than the - default channelSendOptions. (kfujino) -
  • -
-
-

Other

-
    -
  • Add: - Add the JASPIC API jar to the Maven Central publication script. (markt) -
  • -
  • Fix: - Remove classes from tomcat-util-scan.jar that are duplicates of those in - tomcat-util.jar. (markt) -
  • -
  • Add: - Update the NSIS Installer used to build the Windows installer to version - 3.0. (markt) -
  • -
-
-

2016-10-10 Tomcat 9.0.0.M11 (markt)

-

Catalina

-
    -
  • Add: - 59961: Add an option to the StandardJarScanner - to control whether or not JAR Manifests are scanned for additional - class path entries. (markt) -
  • -
  • Fix: - 60013: Refactor the previous fix to align the behaviour of - the Rewrite Valve with mod_rewrite. As part of this, provide an - implementation for the B and NE flags and - improve the handling for the QSA flag. Includes multiple - test cases by Santhana Preethiand a patch by Tiago Oliveira. (markt) -
  • -
  • Fix: - 60087: Refactor the web resources handling to use the Tomcat - specific war:file:... URL protocol to refer to WAR files - and their contents rather than the standard jar:file:... - form since some components of the JRE, such as JAR verification, give - unexpected results when the standard form is used. A side-effect of the - refactoring is that when using packed WARs, it is now possible to - reference a WAR and/or specific JARs within a WAR in the security policy - file used when running under a SecurityManager. (markt) -
  • -
  • Fix: - 60116: Fix a problem with the rewrite valve that caused back - references evaluated in conditions to be forced to lower case when using - the NC flag. (markt) -
  • -
  • Fix: - Ensure Digester.useContextClassLoader is considered in - case the class loader is used. (violetagg) -
  • -
  • Fix: - 60117: Ensure that the name of LogLevel is - localized when using OneLineFormatter. Patch provided by - Tatsuya Bessho. (kfujino) -
  • -
  • Fix: - 60138: Fix the SSLHostConfig so that the - protocols attribute is limited to the protocols supported - by the current JSSE implementation rather than the default protocols - used by the implementation. (markt) -
  • -
  • Fix: - 60146: Improve performance for resource retrieval by making - calls to WebResource.getInputStream() trigger caching if the resource is - small enough. Patch provided by mohitchugh. (markt) -
  • -
  • Add: - 60151: Improve the exception error messages when a - ResourceLink fails to specify the type, specifies an - unknown type or specifies the wrong type. (markt) -
  • -
  • Fix: - 60167: Ignore empty lines in /etc/passwd files - when using the PasswdUserDatabase. (markt) -
  • -
  • Fix: - 60170: Exclude the compressed test file - index.html.br from RAT analysis. Patch provided by Gavin - McDonald. (markt) -
  • -
  • Fix: - When starting web resources, ensure that class resources are only - started once. (markt) -
  • -
  • Fix: - Improve the access checks for linked global resources to handle the case - where the current class loader is a child of the web application class - loader. (markt) -
  • -
  • Fix: - 60196: Ensure that the isMandatory flag is - correctly set when using JASPIC authentication. (markt) -
  • -
  • Fix: - 60199: Log a warning if deserialization issues prevent a - session attribute from being loaded. (markt) -
  • -
  • Fix: - 60208: When using RFC6265 compliant cookies, the - / character should not be allowed in a cookie name since - the RFC6265 will drop such cookies as invalid. (markt) -
  • -
  • Add: - Introduce new methods read(ByteBuffer)/ - write(ByteBuffer) in - o.a.catalina.connector.CoyoteInputStream/ - o.a.catalina.connector.CoyoteOutputStream. (violetagg) -
  • -
-
-

Coyote

-
    -
  • Add: - Refactor the code that implements the requirement that a call to - complete() or dispatch() made from a - non-container thread before the container initiated thread that called - startAsync() completes must be delayed until the container - initiated thread has completed. Rather than implementing this by - blocking the non-container thread, extend the internal state machine to - track this. This removes the possibility that blocking the non-container - thread could trigger a deadlock. (markt) -
  • -
  • Fix: - Fail earlier if the client closes the connection during SNI processing. - (markt) -
  • -
  • Fix: - 60123: Avoid potential threading issues that could cause - excessively large values to be returned for the processing time of - a current request. (markt) -
  • -
  • Fix: - 60174: Log instances of HeadersTooLargeException - during request processing. (markt) -
  • -
  • Fix: - 60173: Allow up to 64kB HTTP/2 header table size limit. (remm) -
  • -
  • Fix: - Java 9 compatibility of direct ByteBuffer cleaner. (remm) -
  • -
-
-

Jasper

-
    -
  • Fix: - 60101: Remove preloading of the class that was deleted. - (violetagg) -
  • -
-
-

Web applications

-
    -
  • Add: - Expand the documentation for the nested elements within a - Resources element to clarify the behaviour of different - configuration options with respect to the order in which resources are - searched. (markt) -
  • -
  • Add: - Add an example of using the classesToInitialize attribute - of the JreMemoryLeakPreventionListener to the documentation - web application. Based on a patch by Cris Berneburg. (markt) -
  • -
  • Fix: - 60192: Correct a typo in the status output of the Manager - application. Patch provided by Radhakrishna Pemmasani. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - Notify jmx when returning the connection that has been marked suspect. - (kfujino) -
  • -
  • Fix: - Ensure that the POOL_EMPTY notification has been added to - the jmx notification types. (kfujino) -
  • -
  • Fix: - 60099: Ensure that use all method arguments as a cache key - when using StatementCache. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Update the download location for Objenesis. (violetagg) -
  • -
  • Fix: - 60164: Replace log4j-core*.jar with - log4j-web*.jar since it is log4j-web*.jar that - contains the ServletContainerInitializer. (markt) -
  • -
  • Add: - Add documentation to the bin/catalina.bat script to remind users that - environment variables don't affect the configuration of Tomcat when - run as a Windows Service. Based upon a documentation patch by - James H.H. Lampert. (schultz) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.10 to - pick up the latest Windows binaries built with OpenSSL 1.0.2j. (markt) -
  • -
-
-

2016-09-05 Tomcat 9.0.0.M10 (markt)

-

Catalina

-
    -
  • Fix: - 59813: Ensure that circular relations of the Class-Path - attribute from JAR manifests will be processed correctly. (violetagg) -
  • -
  • Fix: - Ensure that reading the singleThreadModel attribute of a - StandardWrapper via JMX does not trigger initialisation of - the associated servlet. With some frameworks this can trigger an - unexpected initialisation thread and if initialisation is not thread-safe - the initialisation can then fail. (markt) -
  • -
  • Fix: - Compatibility with rewrite from httpd for non existing headers. - (jfclere) -
  • -
  • Fix: - By default, treat paths used to obtain a request dispatcher as encoded. - This behaviour can be changed per web application via the - dispatchersUseEncodedPaths attribute of the Context. - (markt) -
  • -
  • Add: - Provide a mechanism that enables the container to check if a component - (typically a web application) has been granted a given permission when - running under a SecurityManager without the current execution stack - having to have passed through the component. Use this new mechanism to - extend SecurityManager protection to the system property replacement - feature of the digester. (markt) -
  • -
  • Add: - When retrieving an object via a ResourceLink, ensure that - the object obtained is of the expected type. (markt) -
  • -
  • Fix: - 59823: Ensure that JASPIC configuration is taken into account - when calling HttpServletRequest.authenticate(). (markt) -
  • -
  • Fix: - 59824: Mark the RewriteValve as supporting async - processing by default. (markt) -
  • -
  • Fix: - 59839: Apply roleSearchAsUser to all nested - searches in JNDIRealm. (fschumacher) -
  • -
  • Fix: - 59859: Fix resource leak in WebDAV servlet. Based on patch by - Coty Sutherland. (fschumacher) -
  • -
  • Fix: - 59862: Allow nested jar files scanning to be filtered with - the system property - tomcat.util.scan.StandardJarScanFilter.jarsToSkip. Patch - is provided by Terence Bandoian. (violetagg) -
  • -
  • Fix: - 59866: When scanning WEB-INF/classes for - annotations, don't scan the contents of - WEB-INF/classes/META-INF (if present) since classes will - never be loaded from that location. (markt) -
  • -
  • Fix: - 59888: Correctly handle tabs and spaces in quoted version one - cookies when using the Rfc6265CookieProcessor. (markt) -
  • -
  • Fix: - A number of the JRE memory leaks addressed by the - JreMemoryLeakPreventionListener have been fixed in Java 9 - so the associated protection is now disabled when running on Java 9 - onwards. (markt) -
  • -
  • Fix: - 59912: Fix an edge case in input stream handling where an - IOException could be thrown when reading a POST body. - (markt) -
  • -
  • Fix: - 59913: Correct a regression introduced with the support for - the Servlet 4 HttpServletRequest.getMapping() API that - caused the attributes for forwarded requests to be lost if requested - from within a subsequent include. (markt) -
  • -
  • Fix: - 59966: Do not start the web application if the error page - configuration in web.xml is invalid. (markt) -
  • -
  • Fix: - Switch the CGI servlet to the standard logging mechanism and remove - support for the debug attribute. (markt) -
  • -
  • Fix: - 60012: Improvements in the log messages. Based on - suggestions by Nemo Chen. (violetagg) -
  • -
  • Fix: - Changes to the allowLinking attribute of a - StandardRoot instance now invalidate the cache if caching - is enabled. (markt) -
  • -
  • Add: - Add a new initialisation parameter, envHttpHeaders, to - the CGI Servlet to mitigate httpoxy - (CVE-2016-5388) by default and to provide a mechanism that can be - used to mitigate any future, similar issues. (markt) -
  • -
  • Add: - When adding and removing ResourceLinks dynamically, ensure - that the global resource is only visible via the - ResourceLinkFactory when it is meant to be. (markt) -
  • -
  • Fix: - 60008: When processing CORs requests, treat any origin with a - URI scheme of file as a valid origin. (markt) -
  • -
  • Fix: - Improve handling of exceptions during a Lifecycle events triggered by a - state transition. The exception is now caught and the component is now - placed into the FAILED state. (markt) -
  • -
  • Fix: - 60013: Fix encoding issues when using the RewriteValve with - UTF-8 query strings or UTF-8 redirect URLs. (markt) -
  • -
  • Fix: - 60022: Improve handling when a WAR file and/or the associated - exploded directory are symlinked into the appBase. (markt) -
  • -
  • Fix: - Fix a file descriptor leak when reading the global web.xml. (markt) -
  • -
  • Fix: - Consistently decode URL patterns provided via web.xml using the encoding - of the web.xml file where specified or UTF-8 where no explicit encoding - is specified. (markt) -
  • -
  • Fix: - Make timing attacks against the Realm implementations harder. (schultz) -
  • -
-
-

Coyote

-
    -
  • Fix: - Correct a regression in refactoring to enable injection of custom - keystores that broke the automatic conversion of OpenSSL style PEM - key and certificate files for use with JSSE TLS connectors. (markt) -
  • -
  • Fix: - 59910: Don't hardcode key alias value to "tomcat" for JSSE. - When using a keystore, OpenSSL will still default to it. (remm) -
  • -
  • Fix: - 59904: Add a limit (default 200) for the number of cookies - allowed per request. Based on a patch by gehui. (markt) -
  • -
  • Fix: - 59925: Correct regression in r1628368 and ensure that HTTP - separators are handled as configured in the - LegacyCookieProcessor. Patch provided by Kyohei Nakamura. - (markt) -
  • -
  • Fix: - 59950: Correct log message when reporting that the current - number of HTTP/2 streams for a connection could not be pruned to below - the limit. (markt) -
  • -
  • Fix: - Ensure that Semaphore.release is called in all cases. Even - when there is an exception. (violetagg) -
  • -
  • Fix: - 60030: Correct a potential infinite loop in the SNI parsing - code triggered by failing to handle an end of stream condition. (markt) -
  • -
  • Fix: - Refactor the JSSE client certificate validation so that the - effectiveness of the certificateVerificationDepth - configuration attribute does not depend on the presence of a certificate - revocation list. (markt) -
  • -
  • Fix: - Small logging optimization in the Rfc6265CookieProcessor. - Patch provided by Svetlin Zarev. (markt) -
  • -
  • Fix: - OpenSSL now disables 3DES by default so reflect this when using OpenSSL - syntax to select ciphers. (markt) -
  • -
  • Fix: - Use the proper ERROR socket status code for async errors with NIO2. - (remm) -
  • -
  • Fix: - 60035: Fix a potential connection leak if the client drops a - TLS connection before the handshake completes. (markt) -
  • -
  • Add: - Log a warning at start up if a JSSE TLS connector is configured with - a trusted certificate that is either not yet valid or has expired. - (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - When writing out a full web.xml file with JspC ensure that the encoding - used in the XML prolog matches the encoding used to write the contents - of the file. (markt) -
  • -
  • Fix: - Improve the error handling for custom tags to ensure that the tag is - returned to the pool or released and destroyed once used. (markt) -
  • -
  • Fix: - 60032: Fix handling of method calls that use varargs within - EL value expressions. (markt) -
  • -
  • Fix: - Ignore engineOptionsClass and scratchdir when - running under a security manager. (markt) -
  • -
  • Fix: - Fixed StringIndexOutOfBoundsException. Based on a patch provided by - wuwen via Github. (violetagg) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 59908: Ensure that a reason phrase is included in the close - message if a session is closed due to a timeout. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - 59867: Correct the documentation provided by Manager's - 403.jsp. (violetagg) -
  • -
  • Fix: - 59868: Clarify the documentation for the Manager web - application to make clearer that the host name and IP address in the - server section are the primary host name and IP address. (markt) -
  • -
  • Fix: - 59940: Correct the name of the - truststorePassword attribute of the - SSLHostConfig element in the configuration documentation. - (markt) -
  • -
  • Fix: - MBeans Descriptors How-To is moved to - mbeans-descriptors-howto.html. Patch provided by Radoslav - Husar. (violetagg) -
  • -
  • Fix: - Update NIO Connector configuration documentation with an information - about socket.directSslBuffer. (violetagg) -
  • -
  • Fix: - 60034: Correct a typo in the Manager How-To page of the - documentation web application. (markt) -
  • -
  • Fix: - Correct the name of the CRL location configuration attributes in the - documentation web application. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - In order to avoid the unintended skip of PoolCleaner, - remove the check code of the execution interval in the task that has - been scheduled. (kfujino) -
  • -
  • Fix: - 59850: Ensure that the ResultSet is closed when - enabling the StatementCache interceptor. (kfujino) -
  • -
  • Fix: - 59923: Reduce the default value of - validationInterval in order to avoid the potential issue - that continues to return an invalid connection after database restart. - (kfujino) -
  • -
  • Fix: - Ensure that the ResultSet is returned as Proxy object when - enabling the StatementDecoratorInterceptor. (kfujino) -
  • -
  • Fix: - 60043: Ensure that the suspectTimeout works - without removing connection when the removeAbandoned is - disabled. (kfujino) -
  • -
  • Fix: - Add log message of when returning the connection that has been marked - suspect. (kfujino) -
  • -
  • Fix: - Correct Javadoc for ConnectionPool.suspect(). Based on a - patch by Yahya Cahyadi. (markt) -
  • -
-
-

Other

-
    -
  • Add: - 59871: Add a property (timeFormat) to - JULI's OneLineFormatter to enable the format of the - time stamp used in log messages to be configured. (markt) -
  • -
  • Fix: - 59899: Update Tomcat's copy of the Java Persistence - annotations to include the changes made in 2.1 / JavaEE 7. (markt) -
  • -
  • Fix: - Fixed typos in mbeans-descriptors.xml files. (violetagg) -
  • -
  • Update: - Update the internal fork of Commons BCEL to r1757132 to align with the - BCEL 6 release. (markt) -
  • -
  • Update: - Update the internal fork of Commons DBCP2 to r1757164 to pick up a - couple of bug fixes. (markt) -
  • -
  • Update: - Update the internal fork of Commons Codec to r1757174. Code formatting - changes only. (markt) -
  • -
  • Update: - Update the internal fork of Commons FileUpload to afdedc9. This pulls in - a fix to improve the performance with large multipart boundaries. - (markt) -
  • -
-
-

2016-07-12 Tomcat 9.0.0.M9 (markt)

-

Catalina

-
    -
  • Fix: - 18500: Add limited support for wildcard host names and host - aliases. Names of the form *.domainname are now permitted. - Note that an exact host name match takes precedence over a wild card - host name match. (markt) -
  • -
  • Fix: - 57705: Add debug logging for requests denied by the remote - host and remote address valves and filters. Based on a patch by Graham - Leggett. (markt) -
  • -
  • Fix: - Correct a regression in the fix for 58588 that removed the - entire org.apache.juli package from the embedded JARs - rendering them unusable. (markt) -
  • -
  • Add: - 59399: Add a new option to the Realm implementations that - ship with Tomcat that allows the HTTP status code used for HTTP -> HTTPS - redirects to be controlled per Realm. (markt) -
  • -
  • Fix: - 59708: Modify the LockOutRealm logic. Valid authentication - attempts during the lock out period will no longer reset the lock out - timer to zero. (markt) -
  • -
  • Update: - Change the default of the - sessionCookiePathUsesTrailingSlash attribute of the - Context element to false since the problems - caused when a Servlet is mapped to /* are more significant - than the security risk of not enabling this option by default. (markt) -
  • -
  • Fix: - Follow-up to 59655. Improve the documentation for configuring - permitted cookie names. Patch provided by Kyohei Nakamura. (markt) -
  • -
  • Fix: - Do not attempt to start web resources during a web application's - initialisation phase since the web application is not fully configured - at that point and the web resources may not be correctly configured. - (markt) -
  • -
  • Fix: - Improve error handling around user code prior to calling - InstanceManager.destroy() to ensure that the method is - executed. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Fix a cause of multiple attempts to close the same socket. (markt) -
  • -
  • Code: - Refactor the certificate keystore and trust store generation to make it - easier for embedded users to inject their own key stores. (markt) -
  • -
  • Update: - Add a maxConcurrentStreamExecution on the HTTP/2 - protocol handler to allow restricting the amount of concurrent stream - that are being executed in a single connection. The default is to - not limit it. (remm) -
  • -
  • Add: - 59233: Add the ability to add TLS virtual hosts dynamically. - (markt) -
  • -
  • Fix: - Correct a problem with ServletRequest.getServerPort() for - secure HTTP/2 connections that meant an incorrect value was returned when - using the default port. (markt) -
  • -
  • Fix: - Improve error handling around user code prior to calling - InstanceManager.destroy() to ensure that the method is - executed. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - Improve error handling around user code prior to calling - InstanceManager.destroy() to ensure that the method is - executed. (markt) -
  • -
-
-

WebSocket

-
    -
  • Code: - Now the WebSocket implementation is not built directly on top of the - Servlet API and can use Tomcat internals, there is no need for the - dedicated WebSocket Executor. It has been replaced by the use of the - Connector/Endpoint provided Executor. (markt) -
  • -
  • Fix: - Improve error handling around user code prior to calling - InstanceManager.destroy() to ensure that the method is - executed. (markt) -
  • -
-
-

Web Applications

-
    -
  • Fix: - Do not log an additional case of IOExceptions in the - error handler for the Drawboard WebSocket example when the root cause is - the client disconnecting since the logs add no value. (markt) -
  • -
  • Fix: - 59642: Mention the localDataSource in the - DataSourceRealm section of the Realm How-To. (markt) -
  • -
  • Fix: - 59672: Update the security considerations page of the - documentation web application to take account of the fact that the - Manager and HostManager applications now have a - RemoteAddrValve configured by default. (markt) -
  • -
  • Fix: - Follow-up to the fix for 59399. Ensure that the new attribute - transportGuaranteeRedirectStatus is documented for all - Realms. Also document the NullRealm and - when it is automatically created for an Engine. (markt) -
  • -
  • Fix: - Fix the description of maxAge attribute in jdbc-pool doc. - This attribute works both when a connection is returned and when a - connection is borrowed. (kfujino) -
  • -
  • Fix: - 59774: Correct the prefix values in the - documented examples for configuring the AccessLogValve. - Patch provided by Mike Noordermeer. (markt) -
  • -
-
-

Tribes

-
    -
  • Add: - Add log message when the ping has timed-out. (kfujino) -
  • -
  • Fix: - If the ping message has been received at the - AbstractReplicatedMap#leftOver method, ensure that notify - the member is alive than ignore it. (kfujino) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - Fix the duplicated connection release when connection verification - failed. (kfujino) -
  • -
  • Fix: - Ensure that do not remove the abandoned connection that has been already - released. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Remove JULI plus log4j extras and embedded artifacts from Maven release - script. (markt) -
  • -
  • Add: - Use the mirror network rather than the ASF master site to download the - current ASF dependencies. (markt) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.8 to - pick up the latest fixes and make 1.2.8 the minimum recommended version. - (markt) -
  • -
-
-

2016-06-13 Tomcat 9.0.0.M8 (markt)

-

Coyote

-
    -
  • Fix: - Remove accidentally committed debug code. (markt) -
  • -
-
-

not released Tomcat 9.0.0.M7 (markt)

-

Catalina

-
    -
  • Fix: - RMI Target related memory leaks are avoidable which makes them an - application bug that needs to be fixed rather than a JRE bug to work - around. Therefore, start logging RMI Target related memory leaks on web - application stop. Add an option that controls if the check for these - leaks is made. Log a warning if running on Java 9 with this check - enabled but without the command line option it requires. (markt) -
  • -
  • Fix: - Ensure NPE will not be thrown during deployment when scanning jar files - without MANIFEST.MF file. (violetagg) -
  • -
  • Code: - Remove the clearReferencesStatic option from - StandardContext. It was known to cause problems with some - libraries (such as log4j) and was only linked to suspected memory leaks - rather than known memory leaks. It had been disabled by default with no - increase in the reports of memory leaks for some time. (markt) -
  • -
  • Fix: - 59604: Correct the assumption made in the URL decoding that - the default platform encoding is always compatible with ISO-8859-1. This - assumption is not always valid, e.g. on z/OS. (markt) -
  • -
  • Fix: - 59608: Skip over any invalid Class-Path attribute - from JAR manifests. Log errors at debug level due to many bad libraries. - (remm) -
  • -
  • Fix: - Fix error message when failed to register MBean. (kfujino) -
  • -
  • Fix: - 59655: Configure the cookie name validation to use RFC6265 - rules by default to align it with the default cookie parser. Document - the impact system properties have on cookie name validation. (mark) -
  • -
-
-

Coyote

-
    -
  • Fix: - Ensure that requests with HTTP method names that are not tokens (as - required by RFC 7231) are rejected with a 400 response. (markt) -
  • -
  • Fix: - When an asynchronous request is processed by the AJP connector, ensure - that request processing has fully completed before starting the next - request. (markt) -
  • -
  • Fix: - Improve handling of HTTP/2 stream resets. (markt) -
  • -
  • Add: - 58750: The HTTP Server header is no longer set by default. A - Server header may be configured by setting the server - attribute on the Connector. A new Connector - attribute, serverRemoveAppProvidedValues may be used to - remove any Server header set by a web application. (markt) -
  • -
  • Fix: - 59564: Correct offset when reading into HTTP/2 input buffer - that could cause problems reading request bodies. (violetagg/markt) -
  • -
  • Fix: - Modify the handling of read/write timeouts so that the appropriate error - handling (ReadListener.onError(), - WriteListener.onError() or - AsyncListener.onError()) is called. (markt) -
  • -
  • Fix: - If an async dispatch results in the completion of request processing, - ensure that any remaining request body is swallowed before starting the - processing of the next request else the remaining body may be read as the - start of the next request leading to a 400 response. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 59567: Fix NPE scanning webapps for TLDs when an exploded - JAR has an empty WEB-INF/classes/META-INF folder. (remm) -
  • -
  • Fix: - Fix a memory leak in the expression language implementation that caused - the class loader of the first web application to use expressions to be - pinned in memory. (markt) -
  • -
  • Fix: - 59654: Improve error message when attempting to use a TLD - file from an invalid location. Patch provided by Huxing Zhang. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 59659: Fix possible memory leak in WebSocket handling of - unexpected client disconnects. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - 58891: Update the SSL how-to. Based on a suggestion by - Alexander Kjäll. (markt) -
  • -
-
-

Extras

-
    -
  • Code: - 58588: Remove the JULI extras package from the distribution. - It was only useful for switching Tomcat's internal logging to log4j - 1.2.x and that version of log4j is no longer supported. No additional - Tomcat code is required if switching Tomcat's internal logging to log - via log4j 2.x. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - Fix a memory leak with the pool cleaner thread that retained a reference - to the web application class loader for the first web application to use - a connection pool. (markt) -
  • -
-
-

Other

-
    -
  • Update: - Update the internal fork of Commons DBCP 2 to r1743696 (2.1.1 plus - additional fixes). (markt) -
  • -
  • Update: - Update the internal fork of Commons Pool 2 to r1743697 (2.4.2 plus - additional fixes). (markt) -
  • -
  • Update: - Update the internal fork of Commons File Upload to r1743698 (1.3.1 plus - additional fixes). (markt) -
  • -
  • Code: - Use UTF-8 with a standard prolog for all XML files. (markt) -
  • -
  • Fix: - 58626: Add support for a new environment variable - (USE_NOHUP) that causes nohup to be used when - starting Tomcat. It is disabled by default except on HP-UX where it is - enabled by default since it is required when starting Tomcat at boot on - HP-UX. (markt) -
  • -
-
-

2016-05-16 Tomcat 9.0.0.M6 (markt)

-

Catalina

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

not released Tomcat 9.0.0.M5 (markt)

-

Catalina

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

Coyote

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

Jasper

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

WebSocket

-
    -
  • Fix: - 59189: Explicitly release the native memory held by the - Inflater and Deflater when using - PerMessageDeflate and the WebSocket session ends. Based on a patch by - Henrik Olsson. (markt) -
  • -
  • Fix: - Restore the WsServerContainer.doUpgrade() method which was - accidentally removed since it is not used by Tomcat. (markt) -
  • -
  • Fix: - Fix a regression caused by the connector refactoring and ensure that the - thread context class loader is set to the web application - classloader when processing WebSocket messages on the server. (markt) -
  • -
  • Fix: - Ensure that a client disconnection triggers the error handling for the - associated WebSocket end point. (markt) -
  • -
  • Add: - Make WebSocket client more robust when handling errors during the close - of a WebSocket session. (markt) -
  • -
-
-

Web applications

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

Tribes

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

Other

-
    -
  • Fix: - 59211: Add hamcrest to Eclipse classpath. Patch is provided - by Huxing Zhang. (violetagg) -
  • -
  • Update: - 59276: Update optional Checkstyle library to 6.17. - (kkolinko) -
  • -
  • Update: - 59280: Update the NSIS Installer used to build the - Windows Installers to version 2.51. (kkolinko) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.7 to - pick up the Windows binaries that are based on OpenSSL 1.0.2h and APR - 1.5.2. (markt) -
  • -
-
-

2016-03-16 Tomcat 9.0.0.M4 (markt)

-

Catalina

-
    -
  • Fix: - Ensure that /WEB-INF/classes is never processed as a web - fragment. (markt) -
  • -
  • Update: - Switch default connector when native is installed. Unless configured - otherwise, the NIO endpoint will be used by default. If SSL is - configured, OpenSSL will be used rather than JSSE. (remm) -
  • -
  • Fix: - Correct a regression in the fix for 58867. When configuring a - Context to use an external directory for the docBase, and - that directory happens to be located along side the original WAR, use - the directory as the docBase rather than expanding the - WAR into the appBase and using the newly created expanded - directory as the docBase. (markt) -
  • -
  • Add: - 58351: Make the server build date and server version number - accessible via JMX. Patch provided by Huxing Zhang. (markt) -
  • -
  • Add: - 58988: Special characters in the substitutions for the - RewriteValve can now be quoted with a backslash. (fschumacher) -
  • -
  • Fix: - 58999: Fix class and resource name filtering in - WebappClassLoader. It throws a StringIndexOutOfBoundsException if the - name is exactly "org" or "javax". (rjung) -
  • -
  • Add: - Add JASPIC (JSR-196) support. (markt) -
  • -
  • Add: - Make checking for var and map replacement in RewriteValve a bit stricter - and correct detection of colon in var replacement. (fschumacher) -
  • -
  • Fix: - Refactor the web application class loader to reduce the impact of JAR - scanning on the memory footprint of the web application. (markt) -
  • -
  • Fix: - Fix some resource leaks in the error handling for accessing files from - JARs and WARs. (markt) -
  • -
  • Fix: - Refactor the JAR and JAR-in-WAR resource handling to reduce the memory - footprint of the web application. (markt) -
  • -
  • Fix: - Refactor the web.xml parsing so a new parser is created every time the - web application starts rather than creating and caching the parser when - the Context is created. This enables the parser to take account of - modified Context configuration parameters and reduces (slightly) the - memory footprint of a running Tomcat instance. (markt) -
  • -
  • Update: - Switch the web application class loader to the - ParallelWebappClassLoader by default. (markt) -
  • -
  • Fix: - 57809: Remove the custom context attribute that held the - effective web.xml. Components needing access to configuration - information may access it via the Servlet API. (markt) -
  • -
  • Fix: - Refactor JAR scanning to reduce memory footprint. (markt) -
  • -
  • Fix: - 59001: Correctly handle the case when Tomcat is installed on - a path where one of the segments ends in an exclamation mark. (markt) -
  • -
  • Fix: - Expand the fix for 59001 to cover the special sequences used - in Tomcat's custom jar:war: URLs. (markt) -
  • -
  • Fix: - 59043: Avoid warning while expiring sessions associated with - a single sign on if HttpServletRequest.logout() is used. - (markt) -
  • -
  • Fix: - 59054: Ensure that using the - CrawlerSessionManagerValve in a distributed environment - does not trigger an error when the Valve registers itself in the - session. (markt) -
  • -
  • Fix: - Add socket properties support to storeconfig. (remm) -
  • -
  • Fix: - Fix incorrect parsing of the NE and NC flags in rewrite rules. (remm) -
  • -
  • Fix: - 59065: Correct the timing of the check for colons in paths - on non-Windows systems implemented in catalina.sh so it - works correctly with Cygwin. Patch provided by Ed Randall. (markt) -
  • -
  • Fix: - When a Host is configured with an appBase that does not exist, create - the appBase before trying to expand an external WAR file into it. - (markt) -
  • -
  • Fix: - 59115: When using the Servlet 3.0 file upload, the submitted - file name may be provided as a token or a quoted-string. If a - quoted-string, unquote the string before returning it to the user. - (markt) -
  • -
  • Fix: - 59123: Close NamingEnumeration objects used by - the JNDIRealm once they are no longer required. - (fschumacher/markt) -
  • -
  • Add: - Implement the proposed Servlet 4.0 API to provide mapping type - information for the current request. (markt) -
  • -
  • Fix: - 59138: Correct a false positive warning for ThreadLocal - related memory leaks when the key class but not the value class has been - loaded by the web application class loader. (markt) -
  • -
  • Add: - 59017: Make the pre-compressed file support in the Default - Servlet generic so any compression may be used rather than just gzip. - Patch provided by Mikko Tiihonen. (markt) -
  • -
  • Fix: - 59145: Don't log an invalid warning when a user logs out of - a session associated with SSO. (markt) -
  • -
  • Fix: - 59150: Add an additional flag on APR listener to allow - disabling automatic use of OpenSSL. (remm) -
  • -
  • Fix: - 59151: Fix a regression in the fix for 56917 that - added additional (and arguably unnecessary) validation to the provided - redirect location. (markt) -
  • -
  • Fix: - 59154: Fix a NullPointerException in the - JAASMemoryLoginModule resulting from the introduction of - the CredentialHandler to Realms. - (schultz/markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Handle the case in the NIO2 connector where the required TLS buffer - sizes increase after the connection has been initiated. (markt/remm) -
  • -
  • Fix: - Bad processing of handshake errors in NIO2. (remm) -
  • -
  • Fix: - Use JSSE session configuration options with OpenSSL. (remm) -
  • -
  • Fix: - 59015: Fix potential cause of endless APR Poller loop during - shutdown if the Poller experiences an error during the shutdown process. - (markt) -
  • -
  • Fix: - Align cipher aliases for kECDHE and ECDHE with - the current OpenSSL implementation. (markt) -
  • -
  • Fix: - 59081: Retain the user defined cipher order when defining - ciphers. (markt) -
  • -
  • Fix: - 59089: Correctly ignore HTTP headers that include non-token - characters in the header name. (markt) -
  • -
-
-

Jasper

-
    -
  • Update: - Update to the Eclipse JDT Compiler 4.5.1. (markt) -
  • -
  • Fix: - 57583: Improve the performance of - javax.servlet.jsp.el.ScopedAttributeELResolver when - resolving attributes that do not exist. This improvement only works when - Jasper is used with Tomcat's EL implementation. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - Fix a timing issue on session close that could result in an exception - being thrown for an incomplete message even through the message was - completed. (markt) -
  • -
  • Fix: - Correctly handle compression of partial messages when the final message - fragment has a zero length payload. (markt) -
  • -
  • Fix: - 59119: Correct read logic for WebSocket client when using - secure connections. (markt) -
  • -
  • Fix: - 59134: Correct client connect logic for secure connections - made through a proxy. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Correct an error in the documentation of the expected behaviour for - automatic deployment. If a WAR is updated and an expanded directory is - present, the directory will always be deleted and recreated by expanding - the WAR if unpackWARs is true. (markt) -
  • -
  • Fix: - 48674: Implement an option within the Host Manager web - application to persist the current configuration. Based on a patch by - Coty Sutherland. (markt) -
  • -
  • Fix: - 58935: Remove incorrect references in the documentation to - using jar:file: URLs with the Manager application. (markt) -
  • -
  • Fix: - Correct the description of the - ServletRequest.getServerPort() in Proxy How-To. - Issue reported via comments.apache.org. (violetagg) -
  • -
  • Add: - The Manager and Host Manager applications are now only accessible via - localhost by default. (markt) -
  • -
-
-

Tribes

-
    -
  • Fix: - If promoting a proxy node to a primary node when getting a session, - notify the change of the new primary node to the original backup node. - (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - 58283: Change the default download location for libraries - during the build process from /usr/share/java to - ${user.home}/temp. Patch provided by Ahmed Hosni. (markt) -
  • -
  • Fix: - 59031: When using the Windows uninstaller, do not remove the - contents of any directories that have been symlinked into the Tomcat - directory structure. (markt) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.5 to - pick up the Windows binaries that are based on OpenSSL 1.0.2g and APR - 1.5.1. (markt) -
  • -
  • Update: - Modify the default tomcat-users.xml file to make it harder - for users to configure the entries intended for use with the examples - web application for the Manager application. (markt) -
  • -
-
-

2016-02-05 Tomcat 9.0.0.M3 (markt)

-

General

-
    -
  • Add: - Allow to configure multiple JUnit test class patterns with the build - property test.name and document the property in - BUILDING.txt. (rjung) -
  • -
-
-

Catalina

-
    -
  • Fix: - Protect initialization of ResourceLinkFactory when - running with a SecurityManager. (kkolinko) -
  • -
  • Fix: - Correct a thread safety issue in the filtering of session attributes - based on the implementing class name of the value object. (markt) -
  • -
  • Fix: - Fix class loader decision on the delegation for class loading and - resource lookup and make it faster too. (rjung) -
  • -
  • Fix: - 58768: Log a warning if a redirect fails because of an - invalid location. (markt) -
  • -
  • Code: - 58827: Remove remains of JSR-77 implementation. (markt) -
  • -
  • Fix: - 58946: Ensure that the request parameter map remains - immutable when processing via a RequestDispatcher. (markt) -
  • -
  • Fix: - 58905: Ensure that Tomcat.silence() silences the - correct logger and respects the current setting. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Correct a regression in the connector refactoring in 9.0.0.M2 that broke - TLS support for the APR/native connector. (remm) -
  • -
  • Fix: - Correct an NPE when listing the enabled ciphers (e.g. via the Manager - web application) for a TLS enabled APR/native connector. (markt) -
  • -
  • Add: - New configuration option ajpFlush for the AJP connectors - to disable the sending of AJP flush packets. (rjung) -
  • -
  • Fix: - Handle the case in the NIO connector where the required TLS buffer sizes - increase after the connection has been initiated. (markt) -
  • -
-
-

not released Tomcat 9.0.0.M2 (markt)

-

Catalina

-
    -
  • Code: - Refactor creation of MapperListener to ensure that the - Mapper used is the Mapper associated with the - Service for which the listener was created. (markt) -
  • -
  • Add: - Move the functionality that provides redirects for context roots and - directories where a trailing / is added from the Mapper to - the DefaultServlet. This enables such requests to be - processed by any configured Valves and Filters before the redirect is - made. This behaviour is configurable via the - mapperContextRootRedirectEnabled and - mapperDirectoryRedirectEnabled attributes of the Context - which may be used to restore the previous behaviour. (markt) -
  • -
  • Code: - Refactor Service.getContainer() to return an - Engine rather than a Container. (markt) -
  • -
  • Fix: - 34319: Only load those keys in StoreBase.processExpire - from JDBCStore, that are old enough, to be expired. Based on a patch - by Tom Anderson. (fschumacher) -
  • -
  • Add: - 56917: As per RFC7231 (HTTP/1.1), allow HTTP/1.1 and later - redirects to use relative URIs. This is controlled by a new attribute - useRelativeRedirects on the Context and - defaults to true. (markt) -
  • -
  • Fix: - 58629: Allow an embedded Tomcat instance to start when the - Service has no Engine configured. (markt) -
  • -
  • Fix: - Correctly notify the MapperListener associated with a Service if the - Engine for that Service is changed. (markt) -
  • -
  • Add: - Make a web application's CredentialHandler available through a context - attribute. This allows a web application to use the same algorithm - for validating or generating new stored credentials from cleartext - ones. (schultz) -
  • -
  • Fix: - 58635: Enable break points to be set within agent code when - running Tomcat with a Java agent. Based on a patch by Huxing Zhang. - (markt) -
  • -
  • Fix: - Fixed potential NPE in HostConfig while deploying an - application. Issue reported by coverity scan. (violetagg) -
  • -
  • Fix: - 58655: Fix an IllegalStateException when - calling HttpServletResponse.sendRedirect() with the - RemoteIpFilter. This was caused by trying to correctly - generate the absolute URI for the redirect. With the fix for - 56917, redirects may now be relative making the - sendRedirect() implementation for the - RemoteIpFilter much simpler. This also addresses issues - where the redirect may not have behaved as expected when redirecting - from http to https to from https to http. (markt) -
  • -
  • Fix: - 58657: Exceptions in a Servlet 3.1 ReadListener - or WriteListener do not need to be immediately fatal to the - connection. Allow an error response to be written. (markt) -
  • -
  • Fix: - Correct implementation of - validateClientProvidedNewSessionId so client provided - session IDs may be rejected if validation is enabled. (markt) -
  • -
  • Fix: - 58701: Reset the instanceInitialized field in - StandardWrapper when unloading a Servlet so that a new - instance may be correctly initialized. (markt) -
  • -
  • Update: - Add a new flag aprPreferred to the Apr listener. if set to - false, when using the connector defaults, it will use - NIO + OpenSSL if tomcat-native is available, rather than the APR - connector. (remm) -
  • -
  • Fix: - Add path parameter handling to - HttpServletRequest.getContextPath(). This is a follow-up to - the fix for 57215. (markt) -
  • -
  • Fix: - 58692: Make StandardJarScanner more robust. Log - a warning if a class path entry cannot be scanned rather than triggering - the failure of the web application. Includes a test case written by - Derek Abdine. (markt) -
  • -
  • Fix: - 58702: Ensure an access log entry is generated if the client - aborts the connection. (markt) -
  • -
  • Fix: - Fixed various issues reported by Findbugs. (violetagg) -
  • -
  • Fix: - 58735: Add support for the X-XSS-Protection - header to the HttpHeaderSecurityFilter. Patch provided by - Jacopo Cappellato. (markt) -
  • -
  • Fix: - Add the StatusManagerServlet to the list of Servlets that - can only be loaded by privileged applications. (markt) -
  • -
  • Fix: - Simplify code and fix messages in - org.apache.catalina.core.DefaultInstanceManager class. - (kkolinko) -
  • -
  • Fix: - 58751: Correctly handle the case where an - AsyncListener dispatches to a Servlet on an asynchronous - timeout and the Servlet uses sendError() to trigger an - error page. Includes a test case based on code provided by Andy - Wilkinson.(markt) -
  • -
  • Fix: - Ensure that the proper file encoding if specified will be used when - a readme file is served by DefaultServlet. (violetagg) -
  • -
  • Fix: - Fix declaration of localPort attribute of Connector MBean: - it is read-only. (kkolinko) -
  • -
  • Fix: - 58766: Make skipping non-class files during annotation - scanning faster by checking the file name first. Improve debug logging. - (kkolinko) -
  • -
  • Fix: - 58836: Correctly merge query string parameters when - processing a forwarded request where the target includes a query string - that contains a parameter with no value. (markt/kkolinko) -
  • -
  • Fix: - Make sure that shared Digester is reset in an unlikely error case - in HostConfig.deployWAR(). (kkolinko) -
  • -
  • Add: - Extend the feature available in the cluster session manager - implementations that enables session attribute replication to be - filtered based on attribute name to all session manager implementations. - Note that configuration attribute name has changed from - sessionAttributeFilter to - sessionAttributeNameFilter. Apply the filter on load as - well as unload to ensure that configuration changes made while the web - application is stopped are applied to any persisted data. (markt) -
  • -
  • Add: - Extend the session attribute filtering options to include filtering - based on the implementation class of the value and optional - WARN level logging if an attribute is filtered. These - options are available for all of the Manager implementations that ship - with Tomcat. When a SecurityManager is used filtering will - be enabled by default. (markt) -
  • -
  • Code: - Remove distributable and maxInactiveInterval - from the Manager interface because the attributes are never - used. The equivalent attributes from the Context always - take precedence. (markt) -
  • -
  • Fix: - 58867: Improve checking on Host start for WAR files that have - been modified while Tomcat has stopped and re-expand them if - unpackWARs is true. (markt) -
  • -
  • Fix: - 58900: Correctly undeploy symlinked resources and prevent an - infinite cycle of deploy / undeploy. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - 58621: The certificate chain cannot be set using the main - certificate attribute, so restore the certificate chain property. (remm) -
  • -
  • Fix: - Allow a new SSL config type where a connector can use either JSSE or - OpenSSL. Both could be allowed, but it would likely create support - issues. This type is used by the OpenSSL implementation for NIOx. (remm) -
  • -
  • Fix: - Improve upgrade context classloader handling by using Context.bind and - unbind. (remm) -
  • -
  • Add: - Improve OpenSSL keystore/truststore configuration by using the code - from the JSSE implementation. (remm, jfclere) -
  • -
  • Fix: - Fix a potential loop when a client drops the connection unexpectedly. - (markt) -
  • -
  • Add: - OpenSSL renegotiation support for client certificate authentication. - (remm) -
  • -
  • Fix: - Fix NIO connector renegotiation. (remm) -
  • -
  • Fix: - 58659: Fix a potential deadlock during HTTP/2 processing when - the connection window size is limited. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 57136#c25: Change default value of - quoteAttributeEL setting in Jasper to be true - for better compatibility with other implementations and older versions - of Tomcat. Add command line option -no-quoteAttributeEL in - JspC. (kkolinko) -
  • -
  • Fix: - Fix handling of missing messages in - org.apache.el.util.MessageFactory. (violetagg) -
  • -
-
-

Cluster

-
    -
  • Fix: - Enable an explicit configuration of local member in the static cluster - membership. (kfujino) -
  • -
  • Fix: - Fix potential integer overflow in DeltaSession. - Reported by coverity scan. (fschumacher) -
  • -
  • Fix: - In order to avoid that the heartbeat thread and the background thread to - run Channel.heartbeat simultaneously, if - heartbeatBackgroundEnabled of SimpleTcpCluster - set to true, ensure that the heartbeat thread does not - start. (kfujino) -
  • -
-
-

WebSocket

-
    -
  • Add: - 55006: The WebSocket client now honors the - java.net.java.net.ProxySelector configuration (using the - HTTP type) when establishing WebSocket connections to servers. Based on - a patch by Niki Dokovski. (markt) -
  • -
  • Fix: - 58624: Correct a potential deadlock if the WebSocket - connection is closed when a message write is in progress. (markt) -
  • -
  • Fix: - 57489: Ensure onClose() is called when a - WebSocket connection is closed even if the sending of the close message - fails. Includes test cases by Barry Coughlan. (markt) -
  • -
-
-

Web Applications

-
    -
  • Fix: - 58631: Correct the continuation character use in the Windows - Service How-To page of the documentation web application. (markt) -
  • -
  • Fix: - Correct the SSL documentation for deprecated attributes to point to the - correct, new location for attributes related to individual certificates. - (markt) -
  • -
  • Fix: - Correct some typos in the JNDI resources How-To. (markt) -
  • -
  • Fix: - Don't create session unnecessarily in the Manager application. (markt) -
  • -
  • Fix: - Don't create session unnecessarily in the Host Manager application. - (markt) -
  • -
  • Fix: - 58723: Clarify documentation and error messages for the text - interface of the manager to make clear that version must be used with - path when referencing contexts deployed using parallel deployment. - (markt) -
  • -
  • Add: - Document test.threads option in BUILDING.txt. (kkolinko) -
  • -
-
-

Tribes

-
    -
  • Fix: - Ensure that the static member is registered to the add suspect list even - if the static member that is registered to the remove suspect list has - disappeared. (kfujino) -
  • -
  • Fix: - When using a static cluster, add the members that have been cached in - the membership service to the map members list in order to ensure that - the map member is a static member. (kfujino) -
  • -
  • Fix: - Add support for the startup notification of local members in the static - cluster. (kfujino) -
  • -
  • Fix: - Ignore the unnecessary member remove operation from different domain. - (kfujino) -
  • -
  • Fix: - Add support for the shutdown notification of local members in the static - cluster. (kfujino) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - Correct evaluation of system property - org.apache.tomcat.jdbc.pool.onlyAttemptCurrentClassLoader. - It was basically ignored before. Reported by coverity scan. (fschumacher) -
  • -
  • Fix: - Fix potential integer overflow in ConnectionPool and - PooledConnection. Reported by coverity scan. (fschumacher) -
  • -
-
-

Other

-
    -
  • Update: - Update optional Checkstyle library to 6.14.1. (kkolinko) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.4 to - pick up the Windows binaries that are based on OpenSSL 1.0.2e and APR - 1.5.1. (markt) -
  • -
  • Update: - Update the NSIS Installer used to build the Windows Installers to - version 2.50. (markt/kkolinko) -
  • -
  • Update: - Update the internal fork of Commons BCEL to r1725718 to align with the - refactoring for BCEL 6, the next major BCEL release. (markt) -
  • -
  • Update: - Update the internal fork of Commons DBCP 2 to r1725730 (2.1.1 plus - additional fixes). (markt) -
  • -
  • Update: - Update the internal fork of Commons Pool 2 to r1725738 (2.4.2 plus - additional fixes). (markt) -
  • -
  • Update: - Update the internal fork of Commons Codec to r1725746 (1.9 plus - additional fixes). (markt) -
  • -
-
-

2015-11-17 Tomcat 9.0.0.M1 (markt)

-

General

-
    -
  • Add: - Make Java 8 the minimum required version to build and run Tomcat 9. - (markt) -
  • -
  • Update: - Remove support for Comet. (markt) -
  • -
  • Update: - Tighten up the default file permissions for the .tar.gz - distribution so no files or directories are world readable by default. - Configure Tomcat to run with a default umask of 0027 which - may be overridden by setting UMASK in - setenv.sh. (markt) -
  • -
  • Update: - Remove native code (Windows Service Wrapper, APR/native connector) - support for Windows Itanium. (markt) -
  • -
-
-

Catalina

-
    -
  • Update: - The default HTTP cookie parser has been changed to - org.apache.tomcat.util.http.Rfc6265CookieProcessor. (markt) -
  • -
-
-

Coyote

-
    -
  • Update: - Remove support for the HTTP BIO and AJP BIO connectors. (markt) -
  • -
  • Code: - Refactor HTTP upgrade and AJP implementations to reduce duplication. - (markt) -
  • -
  • Add: - Add support for HPACK header encoding and decoding, contributed - by Stuart Douglas. (remm) -
  • -
  • Add: - 57108: Add support for Server Name Indication (SNI). There - has been significant changes to the SSL configuration in server.xml to - support this. (markt) -
  • -
  • Add: - Add SSL engine for JSSE backed by OpenSSL. Includes ALPN support. - Based on code contributed by Numa de Montmollin and derived from code - developed by Twitter and Netty. (remm) -
  • -
  • Fix: - RFC 7230 states that clients should ignore reason phrases in HTTP/1.1 - response messages. Since the reason phrase is optional, Tomcat no longer - sends it. As a result the system property - org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER is no - longer used and has been removed. (markt) -
  • -
  • Update: - The minimum required Tomcat Native version has been increased to 1.2.2. - The 1.2.x branch includes ALPN and SNI support which are required for - HTTP/2. (markt) -
  • -
  • Add: - Add support for HTTP/2 including server push. (markt) -
  • -
-
-

Tribes

-
    -
  • Fix: - Clarify the handling of Copy message and Copy nodes. (kfujino) -
  • -
-
-

Other

-
    -
  • Add: - Support the use of the threads attribute on Ant's - junit task. Note that using this with a value of greater than one will - disable Cobertura code coverage. (markt) -
  • -
-
-
\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509330470/3/class-loader-howto.html b/ZipProject/wwwroot/zip/15509330470/3/class-loader-howto.html deleted file mode 100644 index 4ebb3d9..0000000 --- a/ZipProject/wwwroot/zip/15509330470/3/class-loader-howto.html +++ /dev/null @@ -1,291 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Class Loader HOW-TO

Class Loader HOW-TO

Table of Contents

Overview

- -

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

- -

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

- -

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

- -
      Bootstrap
-          |
-       System
-          |
-       Common
-       /     \
-  Webapp1   Webapp2 ...
- -

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

- -

Class Loader Definitions

- -

As indicated in the diagram above, Tomcat creates the following class -loaders as it is initialized:

-
    -
  • Bootstrap — This class loader contains the basic - runtime classes provided by the Java Virtual Machine, plus any classes from - JAR files present in the System Extensions directory - ($JAVA_HOME/jre/lib/ext). Note: some JVMs may - implement this as more than one class loader, or it may not be visible - (as a class loader) at all.

  • -
  • System — This class loader is normally initialized - from the contents of the CLASSPATH environment variable. All - such classes are visible to both Tomcat internal classes, and to web - applications. However, the standard Tomcat startup scripts - ($CATALINA_HOME/bin/catalina.sh or - %CATALINA_HOME%\bin\catalina.bat) totally ignore the contents - of the CLASSPATH environment variable itself, and instead - build the System class loader from the following repositories: -

    -
      -
    • $CATALINA_HOME/bin/bootstrap.jar — Contains the - main() method that is used to initialize the Tomcat server, and the - class loader implementation classes it depends on.

    • -
    • $CATALINA_BASE/bin/tomcat-juli.jar or - $CATALINA_HOME/bin/tomcat-juli.jar — Logging - implementation classes. These include enhancement classes to - java.util.logging API, known as Tomcat JULI, - and a package-renamed copy of Apache Commons Logging library - used internally by Tomcat. - See logging documentation for more - details.

      -

      If tomcat-juli.jar is present in - $CATALINA_BASE/bin, it is used instead of the one in - $CATALINA_HOME/bin. It is useful in certain logging - configurations

    • -
    • $CATALINA_HOME/bin/commons-daemon.jar — The classes - from Apache Commons - Daemon project. - This JAR file is not present in the CLASSPATH built by - catalina.bat|.sh scripts, but is referenced - from the manifest file of bootstrap.jar.

    • -
    -
  • -
  • Common — This class loader contains additional - classes that are made visible to both Tomcat internal classes and to all - web applications.

    -

    Normally, application classes should NOT - be placed here. The locations searched by this class loader are defined by - the common.loader property in - $CATALINA_BASE/conf/catalina.properties. The default setting will search the - following locations in the order they are listed:

    -
      -
    • unpacked classes and resources in $CATALINA_BASE/lib
    • -
    • JAR files in $CATALINA_BASE/lib
    • -
    • unpacked classes and resources in $CATALINA_HOME/lib
    • -
    • JAR files in $CATALINA_HOME/lib
    • -
    -

    By default, this includes the following:

    -
      -
    • annotations-api.jar — JavaEE annotations classes.
    • -
    • catalina.jar — Implementation of the Catalina servlet - container portion of Tomcat.
    • -
    • catalina-ant.jar — Tomcat Catalina Ant tasks.
    • -
    • catalina-ha.jar — High availability package.
    • -
    • catalina-storeconfig.jar — Generation of XML - configuration files from current state
    • -
    • catalina-tribes.jar — Group communication package.
    • -
    • ecj-*.jar — Eclipse JDT Java compiler.
    • -
    • el-api.jar — EL 3.0 API.
    • -
    • jasper.jar — Tomcat Jasper JSP Compiler and Runtime.
    • -
    • jasper-el.jar — Tomcat Jasper EL implementation.
    • -
    • jsp-api.jar — JSP 2.3 API.
    • -
    • servlet-api.jar — Servlet 4.0 API.
    • -
    • tomcat-api.jar — Several interfaces defined by Tomcat.
    • -
    • tomcat-coyote.jar — Tomcat connectors and utility classes.
    • -
    • tomcat-dbcp.jar — Database connection pool - implementation based on package-renamed copy of Apache Commons Pool - and Apache Commons DBCP.
    • -
    • tomcat-i18n-**.jar — Optional JARs containing resource bundles - for other languages. As default bundles are also included in each - individual JAR, they can be safely removed if no internationalization - of messages is needed.
    • -
    • tomcat-jdbc.jar — An alternative database connection pool - implementation, known as Tomcat JDBC pool. See - documentation for more details.
    • -
    • tomcat-util.jar — Common classes used by various components of - Apache Tomcat.
    • -
    • tomcat-websocket.jar — WebSocket 1.1 implementation
    • -
    • websocket-api.jar — WebSocket 1.1 API
    • -
  • -
  • WebappX — A class loader is created for each web - application that is deployed in a single Tomcat instance. All unpacked - classes and resources in the /WEB-INF/classes directory of - your web application, plus classes and resources in JAR files - under the /WEB-INF/lib directory of your web application, - are made visible to this web application, but not to other ones.

  • -
- -

As mentioned above, the web application class loader diverges from the -default Java delegation model (in accordance with the recommendations in the -Servlet Specification, version 2.4, section 9.7.2 Web Application Classloader). -When a request to load a -class from the web application's WebappX class loader is processed, -this class loader will look in the local repositories first, -instead of delegating before looking. There are exceptions. Classes which are -part of the JRE base classes cannot be overridden. There are some exceptions -such as the XML parser components which can be overridden using the appropriate -JVM feature which is the endorsed standards override feature for Java <= 8 -and the upgradeable modules feature for Java 9+. -Lastly, the web application class loader will always delegate first for JavaEE -API classes for the specifications implemented by Tomcat -(Servlet, JSP, EL, WebSocket). All other class loaders in Tomcat follow the -usual delegation pattern.

- -

Therefore, from the perspective of a web application, class or resource -loading looks in the following repositories, in this order:

-
    -
  • Bootstrap classes of your JVM
  • -
  • /WEB-INF/classes of your web application
  • -
  • /WEB-INF/lib/*.jar of your web application
  • -
  • System class loader classes (described above)
  • -
  • Common class loader classes (described above)
  • -
- -

If the web application class loader is -configured with -<Loader delegate="true"/> -then the order becomes:

-
    -
  • Bootstrap classes of your JVM
  • -
  • System class loader classes (described above)
  • -
  • Common class loader classes (described above)
  • -
  • /WEB-INF/classes of your web application
  • -
  • /WEB-INF/lib/*.jar of your web application
  • -
- -

XML Parsers and Java

- -

Starting with Java 1.4 a copy of JAXP APIs and an XML parser are packed -inside the JRE. This has impacts on applications that wish to use their own -XML parser.

- -

In old versions of Tomcat, you could simply replace the XML parser -in the Tomcat libraries directory to change the parser -used by all web applications. However, this technique will not be effective -when you are running modern versions of Java, because the usual class loader -delegation process will always choose the implementation inside the JDK in -preference to this one.

- -

Java <= 8 supports a mechanism called the "Endorsed Standards Override -Mechanism" to allow replacement of APIs created outside of the JCP -(i.e. DOM and SAX from W3C). It can also be used to update the XML parser -implementation. For more information, see: - -http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html. For -Java 9+, use the upgradeable modules feature.

- -

Tomcat utilizes the endorsed mechanism by including the system property setting --Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS in the -command line that starts the container. The default value of this option is -$CATALINA_HOME/endorsed. This endorsed directory is not -created by default. Note that the endorsed feature is no longer supported -with Java 9 and the above system property will only be set if either the -directory $CATALINA_HOME/endorsed exists, or the variable -JAVA_ENDORSED_DIRS has been set. -

- -

Note that overriding any JRE component carries risk. If the overriding -component does not provide a 100% compatible API (e.g. the API provided by -Xerces is not 100% compatible with the XML API provided by the JRE) then there -is a risk that Tomcat and/or the deployed application will experience errors.

- -

Running under a security manager

- -

When running under a security manager the locations from which classes -are permitted to be loaded will also depend on the contents of your policy -file. See Security Manager HOW-TO -for further information.

- -

Advanced configuration

- -

A more complex class loader hierarchy may also be configured. See the diagram -below. By default, the Server and Shared -class loaders are not defined and the simplifed hierarchy shown above is used. -This more complex hierarchy may be use by defining values for the -server.loader and/or shared.loader properties in -conf/catalina.properties.

- -

-  Bootstrap
-      |
-    System
-      |
-    Common
-     /  \
-Server  Shared
-         /  \
-   Webapp1  Webapp2 ...
- -

The Server class loader is only visible to Tomcat internals -and is completely invisible to web applications.

- -

The Shared class loader is visible to all web applications -and may be used to shared code across all web applications. However, any updates -to this shared code will require a Tomcat restart.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509330470/3/cluster-howto.html b/ZipProject/wwwroot/zip/15509330470/3/cluster-howto.html deleted file mode 100644 index 6e88ecd..0000000 --- a/ZipProject/wwwroot/zip/15509330470/3/cluster-howto.html +++ /dev/null @@ -1,680 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Clustering/Session Replication HOW-TO

Clustering/Session Replication HOW-TO

Important Note

-

You can also check the configuration reference documentation. -

-

Table of Contents

For the impatient

-

- Simply add -

-
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-

- to your <Engine> or your <Host> element to enable clustering. -

-

- Using the above configuration will enable all-to-all session replication - using the DeltaManager to replicate session deltas. By all-to-all we mean that the session gets replicated to all the other - nodes in the cluster. This works great for smaller cluster but we don't recommend it for larger clusters(a lot of Tomcat nodes). - Also when using the delta manager it will replicate to all nodes, even nodes that don't have the application deployed.
- To get around this problem, you'll want to use the BackupManager. This manager only replicates the session data to one backup - node, and only to nodes that have the application deployed. Downside of the BackupManager: not quite as battle tested as the delta manager. -

-

- Here are some of the important default values: -

-
    -
  1. Multicast address is 228.0.0.4
  2. -
  3. Multicast port is 45564 (the port and the address together determine cluster membership.
  4. -
  5. The IP broadcasted is java.net.InetAddress.getLocalHost().getHostAddress() (make sure you don't broadcast 127.0.0.1, this is a common error)
  6. -
  7. The TCP port listening for replication messages is the first available server socket in range 4000-4100
  8. -
  9. Listener is configured ClusterSessionListener
  10. -
  11. Two interceptors are configured TcpFailureDetector and MessageDispatchInterceptor
  12. -
-

- The following is the default cluster configuration: -

-
        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
-                 channelSendOptions="8">
-
-          <Manager className="org.apache.catalina.ha.session.DeltaManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"/>
-
-          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
-            <Membership className="org.apache.catalina.tribes.membership.McastService"
-                        address="228.0.0.4"
-                        port="45564"
-                        frequency="500"
-                        dropTime="3000"/>
-            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
-                      address="auto"
-                      port="4000"
-                      autoBind="100"
-                      selectorTimeout="5000"
-                      maxThreads="6"/>
-
-            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
-              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
-            </Sender>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
-          </Channel>
-
-          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
-                 filter=""/>
-          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
-
-          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
-                    tempDir="/tmp/war-temp/"
-                    deployDir="/tmp/war-deploy/"
-                    watchDir="/tmp/war-listen/"
-                    watchEnabled="false"/>
-
-          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
-        </Cluster>
-

Will cover this section in more detail later in this document.

-

Security

- -

The cluster implementation is written on the basis that a secure, trusted -network is used for all of the cluster related network traffic. It is not safe -to run a cluster on a insecure, untrusted network.

- -

There are many options for providing a secure, trusted network for use by a -Tomcat cluster. These include:

-
    -
  • private LAN
  • -
  • a Virtual Private Network (VPN)
  • -
  • IPSEC
  • -
- -

Cluster Basics

- -

To run session replication in your Tomcat 9 container, the following steps -should be completed:

-
    -
  • All your session attributes must implement java.io.Serializable
  • -
  • Uncomment the Cluster element in server.xml
  • -
  • If you have defined custom cluster valves, make sure you have the ReplicationValve defined as well under the Cluster element in server.xml
  • -
  • If your Tomcat instances are running on the same machine, make sure the Receiver.port - attribute is unique for each instance, in most cases Tomcat is smart enough to resolve this on it's own by autodetecting available ports in the range 4000-4100
  • -
  • Make sure your web.xml has the - <distributable/> element
  • -
  • If you are using mod_jk, make sure that jvmRoute attribute is set at your Engine <Engine name="Catalina" jvmRoute="node01" > - and that the jvmRoute attribute value matches your worker name in workers.properties
  • -
  • Make sure that all nodes have the same time and sync with NTP service!
  • -
  • Make sure that your loadbalancer is configured for sticky session mode.
  • -
-

Load balancing can be achieved through many techniques, as seen in the -Load Balancing chapter.

-

Note: Remember that your session state is tracked by a cookie, so your URL must look the same from the out - side otherwise, a new session will be created.

-

The Cluster module uses the Tomcat JULI logging framework, so you can configure logging - through the regular logging.properties file. To track messages, you can enable logging on the key: org.apache.catalina.tribes.MESSAGES

-

Overview

- -

To enable session replication in Tomcat, three different paths can be followed to achieve the exact same thing:

-
    -
  1. Using session persistence, and saving the session to a shared file system (PersistenceManager + FileStore)
  2. -
  3. Using session persistence, and saving the session to a shared database (PersistenceManager + JDBCStore)
  4. -
  5. Using in-memory-replication, using the SimpleTcpCluster that ships with Tomcat (lib/catalina-tribes.jar + lib/catalina-ha.jar)
  6. -
- -

In this release of session replication, Tomcat can perform an all-to-all replication of session state using the DeltaManager or - perform backup replication to only one node using the BackupManager. - The all-to-all replication is an algorithm that is only efficient when the clusters are small. For larger clusters, to use - a primary-secondary session replication where the session will only be stored at one backup server simply setup the BackupManager.
- Currently you can use the domain worker attribute (mod_jk > 1.2.8) to build cluster partitions - with the potential of having a more scalable cluster solution with the DeltaManager(you'll need to configure the domain interceptor for this). - In order to keep the network traffic down in an all-to-all environment, you can split your cluster - into smaller groups. This can be easily achieved by using different multicast addresses for the different groups. - A very simple setup would look like this: -

- -
        DNS Round Robin
-               |
-         Load Balancer
-          /           \
-      Cluster1      Cluster2
-      /     \        /     \
-  Tomcat1 Tomcat2  Tomcat3 Tomcat4
- -

What is important to mention here, is that session replication is only the beginning of clustering. - Another popular concept used to implement clusters is farming, i.e., you deploy your apps only to one - server, and the cluster will distribute the deployments across the entire cluster. - This is all capabilities that can go into with the FarmWarDeployer (s. cluster example at server.xml)

-

In the next section will go deeper into how session replication works and how to configure it.

- -

Cluster Information

-

Membership is established using multicast heartbeats. - Hence, if you wish to subdivide your clusters, you can do this by - changing the multicast IP address or port in the <Membership> element. -

-

- The heartbeat contains the IP address of the Tomcat node and the TCP port that - Tomcat listens to for replication traffic. All data communication happens over TCP. -

-

- The ReplicationValve is used to find out when the request has been completed and initiate the - replication, if any. Data is only replicated if the session has changed (by calling setAttribute or removeAttribute - on the session). -

-

- One of the most important performance considerations is the synchronous versus asynchronous replication. - In a synchronous replication mode the request doesn't return until the replicated session has been - sent over the wire and reinstantiated on all the other cluster nodes. - Synchronous vs. asynchronous is configured using the channelSendOptions - flag and is an integer value. The default value for the SimpleTcpCluster/DeltaManager combo is - 8, which is asynchronous. -

-

- For convenience, channelSendOptions can be set by name(s) rather than integer, - which are then translated to their integer value upon startup. The valid option names are: - "asynchronous" (alias "async"), "byte_message" (alias "byte"), "multicast", "secure", - "synchronized_ack" (alias "sync"), "udp", "use_ack". Use comma to separate multiple names, - e.g. pass "async, multicast" for the options - SEND_OPTIONS_ASYNCHRONOUS | SEND_OPTIONS_MULTICAST. -

-

- You can read more on the send flag(overview) or the - send flag(javadoc). - During async replication, the request is returned before the data has been replicated. async - replication yields shorter request times, and synchronous replication guarantees the session - to be replicated before the request returns. -

-

Bind session after crash to failover node

-

- If you are using mod_jk and not using sticky sessions or for some reasons sticky session don't - work, or you are simply failing over, the session id will need to be modified as it previously contained - the worker id of the previous tomcat (as defined by jvmRoute in the Engine element). - To solve this, we will use the JvmRouteBinderValve. -

-

- The JvmRouteBinderValve rewrites the session id to ensure that the next request will remain sticky - (and not fall back to go to random nodes since the worker is no longer available) after a fail over. - The valve rewrites the JSESSIONID value in the cookie with the same name. - Not having this valve in place, will make it harder to ensure stickiness in case of a failure for the mod_jk module. -

-

- Remember, if you are adding your own valves in server.xml then the defaults are no longer valid, - make sure that you add in all the appropriate valves as defined by the default. -

-

- Hint:
- With attribute sessionIdAttribute you can change the request attribute name that included the old session id. - Default attribute name is org.apache.catalina.ha.session.JvmRouteOrignalSessionID. -

-

- Trick:
- You can enable this mod_jk turnover mode via JMX before you drop a node to all backup nodes! - Set enable true on all JvmRouteBinderValve backups, disable worker at mod_jk - and then drop node and restart it! Then enable mod_jk Worker and disable JvmRouteBinderValves again. - This use case means that only requested session are migrated. -

- - -

Configuration Example

-
        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
-                 channelSendOptions="6">
-
-          <Manager className="org.apache.catalina.ha.session.BackupManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"
-                   mapSendOptions="6"/>
-          <!--
-          <Manager className="org.apache.catalina.ha.session.DeltaManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"/>
-          -->
-          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
-            <Membership className="org.apache.catalina.tribes.membership.McastService"
-                        address="228.0.0.4"
-                        port="45564"
-                        frequency="500"
-                        dropTime="3000"/>
-            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
-                      address="auto"
-                      port="5000"
-                      selectorTimeout="100"
-                      maxThreads="6"/>
-
-            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
-              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
-            </Sender>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
-          </Channel>
-
-          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
-                 filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>
-
-          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
-                    tempDir="/tmp/war-temp/"
-                    deployDir="/tmp/war-deploy/"
-                    watchDir="/tmp/war-listen/"
-                    watchEnabled="false"/>
-
-          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
-        </Cluster>
-

- Break it down!! -

-
        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
-                 channelSendOptions="6">
-

- The main element, inside this element all cluster details can be configured. - The channelSendOptions is the flag that is attached to each message sent by the - SimpleTcpCluster class or any objects that are invoking the SimpleTcpCluster.send method. - The description of the send flags is available at - our javadoc site - The DeltaManager sends information using the SimpleTcpCluster.send method, while the backup manager - sends it itself directly through the channel. -
For more info, Please visit the reference documentation -

-
          <Manager className="org.apache.catalina.ha.session.BackupManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"
-                   mapSendOptions="6"/>
-          <!--
-          <Manager className="org.apache.catalina.ha.session.DeltaManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"/>
-          -->
-

- This is a template for the manager configuration that will be used if no manager is defined in the <Context> - element. In Tomcat 5.x each webapp marked distributable had to use the same manager, this is no longer the case - since Tomcat you can define a manager class for each webapp, so that you can mix managers in your cluster. - Obviously the managers on one node's application has to correspond with the same manager on the same application on the other node. - If no manager has been specified for the webapp, and the webapp is marked <distributable/> Tomcat will take this manager configuration - and create a manager instance cloning this configuration. -
For more info, Please visit the reference documentation -

-
          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
-

- The channel element is Tribes, the group communication framework - used inside Tomcat. This element encapsulates everything that has to do with communication and membership logic. -
For more info, Please visit the reference documentation -

-
            <Membership className="org.apache.catalina.tribes.membership.McastService"
-                        address="228.0.0.4"
-                        port="45564"
-                        frequency="500"
-                        dropTime="3000"/>
-

- Membership is done using multicasting. Please note that Tribes also supports static memberships using the - StaticMembershipInterceptor if you want to extend your membership to points beyond multicasting. - The address attribute is the multicast address used and the port is the multicast port. These two together - create the cluster separation. If you want a QA cluster and a production cluster, the easiest config is to - have the QA cluster be on a separate multicast address/port combination than the production cluster.
- The membership component broadcasts TCP address/port of itself to the other nodes so that communication between - nodes can be done over TCP. Please note that the address being broadcasted is the one of the - Receiver.address attribute. -
For more info, Please visit the reference documentation -

-
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
-                      address="auto"
-                      port="5000"
-                      selectorTimeout="100"
-                      maxThreads="6"/>
-

- In tribes the logic of sending and receiving data has been broken into two functional components. The Receiver, as the name suggests - is responsible for receiving messages. Since the Tribes stack is thread less, (a popular improvement now adopted by other frameworks as well), - there is a thread pool in this component that has a maxThreads and minThreads setting.
- The address attribute is the host address that will be broadcasted by the membership component to the other nodes. -
For more info, Please visit the reference documentation -

-
            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
-              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
-            </Sender>
-

- The sender component, as the name indicates is responsible for sending messages to other nodes. - The sender has a shell component, the ReplicationTransmitter but the real stuff done is done in the - sub component, Transport. - Tribes support having a pool of senders, so that messages can be sent in parallel and if using the NIO sender, - you can send messages concurrently as well.
- Concurrently means one message to multiple senders at the same time and Parallel means multiple messages to multiple senders - at the same time. -
For more info, Please visit the reference documentation -

-
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
-          </Channel>
-

- Tribes uses a stack to send messages through. Each element in the stack is called an interceptor, and works much like the valves do - in the Tomcat servlet container. - Using interceptors, logic can be broken into more manageable pieces of code. The interceptors configured above are:
- TcpFailureDetector - verifies crashed members through TCP, if multicast packets get dropped, this interceptor protects against false positives, - ie the node marked as crashed even though it still is alive and running.
- MessageDispatchInterceptor - dispatches messages to a thread (thread pool) to send message asynchronously.
- ThroughputInterceptor - prints out simple stats on message traffic.
- Please note that the order of interceptors is important. The way they are defined in server.xml is the way they are represented in the - channel stack. Think of it as a linked list, with the head being the first most interceptor and the tail the last. -
For more info, Please visit the reference documentation -

-
          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
-                 filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>
-

- The cluster uses valves to track requests to web applications, we've mentioned the ReplicationValve and the JvmRouteBinderValve above. - The <Cluster> element itself is not part of the pipeline in Tomcat, instead the cluster adds the valve to its parent container. - If the <Cluster> elements is configured in the <Engine> element, the valves get added to the engine and so on. -
For more info, Please visit the reference documentation -

-
          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
-                    tempDir="/tmp/war-temp/"
-                    deployDir="/tmp/war-deploy/"
-                    watchDir="/tmp/war-listen/"
-                    watchEnabled="false"/>
-

- The default tomcat cluster supports farmed deployment, ie, the cluster can deploy and undeploy applications on the other nodes. - The state of this component is currently in flux but will be addressed soon. There was a change in the deployment algorithm - between Tomcat 5.0 and 5.5 and at that point, the logic of this component changed to where the deploy dir has to match the - webapps directory. -
For more info, Please visit the reference documentation -

-
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
-        </Cluster>
-

- Since the SimpleTcpCluster itself is a sender and receiver of the Channel object, components can register themselves as listeners to - the SimpleTcpCluster. The listener above ClusterSessionListener listens for DeltaManager replication messages - and applies the deltas to the manager that in turn applies it to the session. -
For more info, Please visit the reference documentation -

- -

Cluster Architecture

- -

Component Levels:

-
         Server
-           |
-         Service
-           |
-         Engine
-           |  \
-           |  --- Cluster --*
-           |
-         Host
-           |
-         ------
-        /      \
-     Cluster    Context(1-N)
-        |             \
-        |             -- Manager
-        |                   \
-        |                   -- DeltaManager
-        |                   -- BackupManager
-        |
-     ---------------------------
-        |                       \
-      Channel                    \
-    ----------------------------- \
-        |                          \
-     Interceptor_1 ..               \
-        |                            \
-     Interceptor_N                    \
-    -----------------------------      \
-     |          |         |             \
-   Receiver    Sender   Membership       \
-                                         -- Valve
-                                         |      \
-                                         |       -- ReplicationValve
-                                         |       -- JvmRouteBinderValve
-                                         |
-                                         -- LifecycleListener
-                                         |
-                                         -- ClusterListener
-                                         |      \
-                                         |       -- ClusterSessionListener
-                                         |
-                                         -- Deployer
-                                                \
-                                                 -- FarmWarDeployer
-
-
- - -

How it Works

-

To make it easy to understand how clustering works, We are gonna take you through a series of scenarios. - In the scenario we only plan to use two tomcat instances TomcatA and TomcatB. - We will cover the following sequence of events:

- -
    -
  1. TomcatA starts up
  2. -
  3. TomcatB starts up (Wait that TomcatA start is complete)
  4. -
  5. TomcatA receives a request, a session S1 is created.
  6. -
  7. TomcatA crashes
  8. -
  9. TomcatB receives a request for session S1
  10. -
  11. TomcatA starts up
  12. -
  13. TomcatA receives a request, invalidate is called on the session (S1)
  14. -
  15. TomcatB receives a request, for a new session (S2)
  16. -
  17. TomcatA The session S2 expires due to inactivity.
  18. -
- -

Ok, now that we have a good sequence, we will take you through exactly what happens in the session replication code

- -
    -
  1. TomcatA starts up -

    - Tomcat starts up using the standard start up sequence. When the Host object is created, a cluster object is associated with it. - When the contexts are parsed, if the distributable element is in place in web.xml - Tomcat asks the Cluster class (in this case SimpleTcpCluster) to create a manager - for the replicated context. So with clustering enabled, distributable set in web.xml - Tomcat will create a DeltaManager for that context instead of a StandardManager. - The cluster class will start up a membership service (multicast) and a replication service (tcp unicast). - More on the architecture further down in this document. -

    -
  2. -
  3. TomcatB starts up -

    - When TomcatB starts up, it follows the same sequence as TomcatA did with one exception. - The cluster is started and will establish a membership (TomcatA,TomcatB). - TomcatB will now request the session state from a server that already exists in the cluster, - in this case TomcatA. TomcatA responds to the request, and before TomcatB starts listening - for HTTP requests, the state has been transferred from TomcatA to TomcatB. - In case TomcatA doesn't respond, TomcatB will time out after 60 seconds, and issue a log - entry. The session state gets transferred for each web application that has distributable in - its web.xml. Note: To use session replication efficiently, all your tomcat instances should be - configured the same. -

    -
  4. -
  5. TomcatA receives a request, a session S1 is created. -

    - The request coming in to TomcatA is treated exactly the same way as without session replication. - The action happens when the request is completed, the ReplicationValve will intercept - the request before the response is returned to the user. - At this point it finds that the session has been modified, and it uses TCP to replicate the - session to TomcatB. Once the serialized data has been handed off to the operating systems TCP logic, - the request returns to the user, back through the valve pipeline. - For each request the entire session is replicated, this allows code that modifies attributes - in the session without calling setAttribute or removeAttribute to be replicated. - a useDirtyFlag configuration parameter can be used to optimize the number of times - a session is replicated. -

    - -
  6. -
  7. TomcatA crashes -

    - When TomcatA crashes, TomcatB receives a notification that TomcatA has dropped out - of the cluster. TomcatB removes TomcatA from its membership list, and TomcatA will no longer - be notified of any changes that occurs in TomcatB. - The load balancer will redirect the requests from TomcatA to TomcatB and all the sessions - are current. -

    -
  8. -
  9. TomcatB receives a request for session S1 -

    Nothing exciting, TomcatB will process the request as any other request. -

    -
  10. -
  11. TomcatA starts up -

    Upon start up, before TomcatA starts taking new request and making itself - available to it will follow the start up sequence described above 1) 2). - It will join the cluster, contact TomcatB for the current state of all the sessions. - And once it receives the session state, it finishes loading and opens its HTTP/mod_jk ports. - So no requests will make it to TomcatA until it has received the session state from TomcatB. -

    -
  12. -
  13. TomcatA receives a request, invalidate is called on the session (S1) -

    The invalidate call is intercepted, and the session is queued with invalidated sessions. - When the request is complete, instead of sending out the session that has changed, it sends out - an "expire" message to TomcatB and TomcatB will invalidate the session as well. -

    - -
  14. -
  15. TomcatB receives a request, for a new session (S2) -

    Same scenario as in step 3) -

    - - -
  16. -
  17. TomcatA The session S2 expires due to inactivity. -

    The invalidate call is intercepted the same was as when a session is invalidated by the user, - and the session is queued with invalidated sessions. - At this point, the invalidated session will not be replicated across until - another request comes through the system and checks the invalid queue. -

    -
  18. -
- -

Phuuuhh! :)

- -

Membership - Clustering membership is established using very simple multicast pings. - Each Tomcat instance will periodically send out a multicast ping, - in the ping message the instance will broad cast its IP and TCP listen port - for replication. - If an instance has not received such a ping within a given timeframe, the - member is considered dead. Very simple, and very effective! - Of course, you need to enable multicasting on your system. -

- -

TCP Replication - Once a multicast ping has been received, the member is added to the cluster - Upon the next replication request, the sending instance will use the host and - port info and establish a TCP socket. Using this socket it sends over the serialized data. - The reason I choose TCP sockets is because it has built in flow control and guaranteed delivery. - So I know, when I send some data, it will make it there :) -

- -

Distributed locking and pages using frames - Tomcat does not keep session instances in sync across the cluster. - The implementation of such logic would be to much overhead and cause all - kinds of problems. If your client accesses the same session - simultaneously using multiple requests, then the last request - will override the other sessions in the cluster. -

- -

Monitoring your Cluster with JMX

-

Monitoring is a very important question when you use a cluster. Some of the cluster objects are JMX MBeans

-

Add the following parameter to your startup script with Java 5:

-
set CATALINA_OPTS=\
--Dcom.sun.management.jmxremote \
--Dcom.sun.management.jmxremote.port=%my.jmx.port% \
--Dcom.sun.management.jmxremote.ssl=false \
--Dcom.sun.management.jmxremote.authenticate=false
- -

- List of Cluster Mbeans -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionMBean ObjectName - EngineMBean ObjectName - Host
ClusterThe complete cluster elementtype=Clustertype=Cluster,host=${HOST}
DeltaManagerThis manager control the sessions and handle session replication type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}
FarmWarDeployerManages the process of deploying an application to all nodes in the clusterNot supportedtype=Cluster, host=${HOST}, component=deployer
MemberRepresents a node in the clustertype=Cluster, component=member, name=${NODE_NAME}type=Cluster, host=${HOST}, component=member, name=${NODE_NAME}
ReplicationValveThis valve control the replication to the backup nodestype=Valve,name=ReplicationValvetype=Valve,name=ReplicationValve,host=${HOST}
JvmRouteBinderValveThis is a cluster fallback valve to change the Session ID to the current tomcat jvmroute.type=Valve,name=JvmRouteBinderValve, - context=${APP.CONTEXT.PATH}type=Valve,name=JvmRouteBinderValve,host=${HOST}, - context=${APP.CONTEXT.PATH}
-

FAQ

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509330470/3/comments.html b/ZipProject/wwwroot/zip/15509330470/3/comments.html deleted file mode 100644 index c0c5627..0000000 --- a/ZipProject/wwwroot/zip/15509330470/3/comments.html +++ /dev/null @@ -1,122 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Documentation User Comments

Documentation User Comments

Introduction

- -

The Tomcat documentation integrates the -Apache Comments System. -It allows users to add comments to most documentation pages. The comments -section can be found at the end of each page.

- -

Allowed Content

- -

Please use the Apache Comments System responsibly. We can only provide -this service to the community as long as it isn't misused.

- -

The comments are not for general Q&A. -Comments should be pointed towards suggestions on improving the documentation -or server. Questions on how to use Apache Tomcat should be directed -to our mailing lists.

- -

Comments may be removed by moderators if they are either -implemented or considered invalid/off-topic.

- -

HTML is not allowed in comments, and will just display as raw source code -if attempted. Links that do not point to an Apache site (*.apache.org) will -need approval by a moderator before the comment is visible to regular visitors.

- -

License

- -

Any submitted comments must be contributed under the terms of the -Apache License, Version 2.0.

- -

Verified Users

- -

Verified users gain the Apache feather next to their name, -and may post comments with links in them without requiring approval -by a moderator before the comments are shown. Being a verified user -in itself does not give you moderating rights. If you are interested -in becoming a verified user, please contact us on the -users mailing list.

- -

All ASF committers are automatically verified users.

- -

Moderators

- -

Moderators are allowed to mark comments as "Resolved", "Invalid" -or "Sticky", remove marks, approve comments e.g. if they contain -a link, and delete comments. Moderators can also subscribe to new -comments and comment updates and use the dashboard to gain some -overview over all comments of a site.

- -

To use the moderation features, you need to login to the comments -system. Furthermore you will need to allow cookies to be set for -comments.apache.org (this is done using a secure https cookie). Once -logged in as a moderator you will see additional moderation -options attached to each comment.

- -

If you are a long time follower of the Apache Tomcat projects -and you are interested in becoming a moderator, please contact us on the -users mailing list.

- -

Privacy Policy

- -

No data except what you personally submit is kept on record. -A cookie is used to keep track of moderators and other people -who wish to create an account to avoid having to enter their -credentials whenever they wish to post a comment.

- -

To prevent spam and unsolicited comments, we use a digest of -visitors' IPs to keep track of comments posted by them.

- -

Entering an email address when you post a comment is completely -optional, and will not be shared with anyone. If you enter an -email address, it will be used to notify you when someone posts -a reply to one of your comments, provided you have registered -an account and validated your email address.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509330470/connectors.html b/ZipProject/wwwroot/zip/15509330470/connectors.html deleted file mode 100644 index 29f090b..0000000 --- a/ZipProject/wwwroot/zip/15509330470/connectors.html +++ /dev/null @@ -1,86 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Connectors How To

Connectors How To

Table of Contents

Introduction

- -

Choosing a connector to use with Tomcat can be difficult. This page will -list the connectors which are supported with this Tomcat release, and will -hopefully help you make the right choice according to your needs.

- -

HTTP

- -

The HTTP connector is setup by default with Tomcat, and is ready to use. This -connector features the lowest latency and best overall performance.

- -

For clustering, a HTTP load balancer with support for web sessions stickiness -must be installed to direct the traffic to the Tomcat servers. Tomcat supports mod_proxy -(on Apache HTTP Server 2.x, and included by default in Apache HTTP Server 2.2) as the load balancer. -It should be noted that the performance of HTTP proxying is usually lower than the -performance of AJP, so AJP clustering is often preferable.

- -

AJP

- -

When using a single server, the performance when using a native webserver in -front of the Tomcat instance is most of the time significantly worse than a -standalone Tomcat with its default HTTP connector, even if a large part of the web -application is made of static files. If integration with the native webserver is -needed for any reason, an AJP connector will provide faster performance than -proxied HTTP. AJP clustering is the most efficient from the Tomcat perspective. -It is otherwise functionally equivalent to HTTP clustering.

- -

The native connectors supported with this Tomcat release are:

-
    -
  • JK 1.2.x with any of the supported servers
  • -
  • mod_proxy on Apache HTTP Server 2.x (included by default in Apache HTTP Server 2.2), -with AJP enabled
  • -
- -

Other native connectors supporting AJP may work, but are no longer supported.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git "a/ZipProject/wwwroot/zip/15509338630/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" "b/ZipProject/wwwroot/zip/15509338630/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" deleted file mode 100644 index 2235920..0000000 --- "a/ZipProject/wwwroot/zip/15509338630/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" +++ /dev/null @@ -1,278 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Building Tomcat

Building Tomcat

Table of Contents

Introduction

- -

-Building Apache Tomcat from source is very easy, and is the first step to -contributing to Tomcat. The complete and comprehensive instructions are -provided in the file BUILDING.txt. -The following is a quick step by step guide. -

- -

Download a Java Development Kit (JDK) version 8

- -

-Building Apache Tomcat requires a JDK (version 8) to be installed. You can download one from
-http://www.oracle.com/technetwork/java/javase/downloads/index.html
-http://openjdk.java.net/install/index.html
-or another JDK vendor. -

- -

-IMPORTANT: Set an environment variable JAVA_HOME to the pathname of the -directory into which you installed the JDK release. -

- -

Install Apache Ant 1.9.8 or later

- -

-Download a binary distribution of Ant 1.9.8 or later from -here. -

- -

-Unpack the binary distribution into a convenient location so that the -Ant release resides in its own directory (conventionally named -apache-ant-1.9.x). For the remainder of this guide, -the symbolic name ${ant.home} is used to refer to the full pathname of - the Ant installation directory. -

- -

-IMPORTANT: Create an ANT_HOME environment variable to point the directory ${ant.home}, -and modify the PATH environment variable to include directory -${ant.home}/bin in its list. This makes the ant command line script -available, which will be used to actually perform the build. -

- -

Checkout or obtain the Tomcat source code

- -

- Tomcat SVN repository URL: - https://svn.apache.org/repos/asf/tomcat/trunk/ -

-

- Tomcat source packages: - https://tomcat.apache.org/download-90.cgi. -

- -

- Checkout the source using SVN, selecting a tag for released version or - trunk for the current development code, or download and unpack a - source package. For the remainder of this guide, the symbolic name - ${tomcat.source} is used to refer to the - location where the source has been placed. -

- -

Configure download area

- -

- Building Tomcat involves downloading a number of libraries that it depends on. - It is strongly recommended to configure download area for those libraries. -

- -

- By default the build is configured to download the dependencies into the - ${user.home}/tomcat-build-libs directory. You can change this - (see below) but it must be an absolute path. -

- -

- The build is controlled by creating a - ${tomcat.source}/build.properties file. It can be used to - redefine any property that is present in build.properties.default - and build.xml files. The build.properties file - does not exist by default. You have to create it. -

- -

- The download area is defined by property base.path. For example: -

- -
# ----- Default Base Path for Dependent Packages -----
-# Replace this path with the directory path where
-# dependencies binaries should be downloaded.
-base.path=/home/me/some-place-to-download-to
- -

- Different versions of Tomcat are allowed to share the same download area. -

- -

- Another example: -

- -
base.path=${user.dir}/../libraries-tomcat9.0
- -

- Users who access the Internet through a proxy must use the properties - file to indicate to Ant the proxy configuration: -

- -
# ----- Proxy setup -----
-proxy.host=proxy.domain
-proxy.port=8080
-proxy.use=on
- -

Building Tomcat

- -

-Use the following commands to build Tomcat: -

- -

-cd ${tomcat.source}
-ant -

- -

-Once the build has completed successfully, a usable Tomcat installation will have been -produced in the ${tomcat.source}/output/build directory, and can be started -and stopped with the usual scripts. -

-

Building with Eclipse

- -

-IMPORTANT: This is not a supported means of building Tomcat; this information is -provided without warranty :-). -The only supported means of building Tomcat is with the Ant build described above. -However, some developers like to work on Java code with a Java IDE, -and the following steps have been used by some developers. -

- -

-NOTE: This will not let you build everything under Eclipse; -the build process requires use of Ant for the many stages that aren't -simple Java compilations. -However, it will allow you to view and edit the Java code, -get warnings, reformat code, perform refactorings, run Tomcat -under the IDE, and so on. -

- -

-WARNING: Do not forget to create and configure - ${tomcat.source}/build.properties file as described above - before running any Ant targets. -

- -

-Sample Eclipse project files and launch targets are provided in the -res/ide-support/eclipse directory of the source tree. -The instructions below will automatically copy these into the required locations. -

-

-An Ant target is provided as a convenience to download all binary dependencies, and to create -the Eclipse project and classpath files in the root of the source tree. -

- -

-cd ${tomcat.source}
-ant ide-eclipse -

- -

-Start Eclipse and create a new Workspace. -

- -

-Open the Preferences dialog and then select Java->Build Path->Classpath -Variables to add two new Classpath Variables: -

- - - - - -
TOMCAT_LIBS_BASEThe same location as the base.path - setting in build.properties, where the binary dependencies have been downloaded
ANT_HOMEthe base path of Ant 1.9.8 or later
- - -

-Use File->Import and choose Existing Projects into Workspace. -From there choose the root directory of the Tomcat source tree (${tomcat.source}) -and import the Tomcat project located there. -

- -

-start-tomcat and stop-tomcat launch configurations are provided in -res/ide-support/eclipse and will be available in the Run->Run Configurations -dialog. Use these to start and stop Tomcat from Eclipse. -If you want to configure these yourself (or are using a different IDE) -then use org.apache.catalina.startup.Bootstrap as the main class, -start/stop etc. as program arguments, and specify -Dcatalina.home=... -(with the name of your build directory) as VM arguments. -

- -

-Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat -coding conventions (and have your contributions accepted): -

- - - - - - - - -
Java -> Code Style -> Formatter -> Edit...Tab policy: Spaces only
Tab and Indentation size: 4
General -> Editors -> Text EditorsDisplayed tab width: 2
Insert spaces for tabs
Show whitespace characters (optional)
XML -> XML Files -> EditorIndent using spaces
Indentation size: 2
Ant -> Editor -> FormatterTab size: 2
Use tab character instead of spaces: unchecked
- -

-The recommended configuration of Compiler Warnings is documented in -res/ide-support/eclipse/java-compiler-errors-warnings.txt file. -

- -

Building with other IDEs

-

-The same general approach should work for most IDEs; it has been reported -to work in IntelliJ IDEA, for example. -

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509338630/balancer-howto.html b/ZipProject/wwwroot/zip/15509338630/balancer-howto.html deleted file mode 100644 index ebef81c..0000000 --- a/ZipProject/wwwroot/zip/15509338630/balancer-howto.html +++ /dev/null @@ -1,61 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Load Balancer HOW-TO

Load Balancer HOW-TO

Table of Contents

Using the JK 1.2.x native connector

- -Please refer to the JK 1.2.x documentation. - -

Using Apache HTTP Server 2.x with mod_proxy

- -Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either -HTTP or AJP load balancing. This new version of mod_proxy is also usable with -Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code -from Apache HTTP Server 2.2. - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git "a/ZipProject/wwwroot/zip/15509339270/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" "b/ZipProject/wwwroot/zip/15509339270/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" deleted file mode 100644 index 2235920..0000000 --- "a/ZipProject/wwwroot/zip/15509339270/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" +++ /dev/null @@ -1,278 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Building Tomcat

Building Tomcat

Table of Contents

Introduction

- -

-Building Apache Tomcat from source is very easy, and is the first step to -contributing to Tomcat. The complete and comprehensive instructions are -provided in the file BUILDING.txt. -The following is a quick step by step guide. -

- -

Download a Java Development Kit (JDK) version 8

- -

-Building Apache Tomcat requires a JDK (version 8) to be installed. You can download one from
-http://www.oracle.com/technetwork/java/javase/downloads/index.html
-http://openjdk.java.net/install/index.html
-or another JDK vendor. -

- -

-IMPORTANT: Set an environment variable JAVA_HOME to the pathname of the -directory into which you installed the JDK release. -

- -

Install Apache Ant 1.9.8 or later

- -

-Download a binary distribution of Ant 1.9.8 or later from -here. -

- -

-Unpack the binary distribution into a convenient location so that the -Ant release resides in its own directory (conventionally named -apache-ant-1.9.x). For the remainder of this guide, -the symbolic name ${ant.home} is used to refer to the full pathname of - the Ant installation directory. -

- -

-IMPORTANT: Create an ANT_HOME environment variable to point the directory ${ant.home}, -and modify the PATH environment variable to include directory -${ant.home}/bin in its list. This makes the ant command line script -available, which will be used to actually perform the build. -

- -

Checkout or obtain the Tomcat source code

- -

- Tomcat SVN repository URL: - https://svn.apache.org/repos/asf/tomcat/trunk/ -

-

- Tomcat source packages: - https://tomcat.apache.org/download-90.cgi. -

- -

- Checkout the source using SVN, selecting a tag for released version or - trunk for the current development code, or download and unpack a - source package. For the remainder of this guide, the symbolic name - ${tomcat.source} is used to refer to the - location where the source has been placed. -

- -

Configure download area

- -

- Building Tomcat involves downloading a number of libraries that it depends on. - It is strongly recommended to configure download area for those libraries. -

- -

- By default the build is configured to download the dependencies into the - ${user.home}/tomcat-build-libs directory. You can change this - (see below) but it must be an absolute path. -

- -

- The build is controlled by creating a - ${tomcat.source}/build.properties file. It can be used to - redefine any property that is present in build.properties.default - and build.xml files. The build.properties file - does not exist by default. You have to create it. -

- -

- The download area is defined by property base.path. For example: -

- -
# ----- Default Base Path for Dependent Packages -----
-# Replace this path with the directory path where
-# dependencies binaries should be downloaded.
-base.path=/home/me/some-place-to-download-to
- -

- Different versions of Tomcat are allowed to share the same download area. -

- -

- Another example: -

- -
base.path=${user.dir}/../libraries-tomcat9.0
- -

- Users who access the Internet through a proxy must use the properties - file to indicate to Ant the proxy configuration: -

- -
# ----- Proxy setup -----
-proxy.host=proxy.domain
-proxy.port=8080
-proxy.use=on
- -

Building Tomcat

- -

-Use the following commands to build Tomcat: -

- -

-cd ${tomcat.source}
-ant -

- -

-Once the build has completed successfully, a usable Tomcat installation will have been -produced in the ${tomcat.source}/output/build directory, and can be started -and stopped with the usual scripts. -

-

Building with Eclipse

- -

-IMPORTANT: This is not a supported means of building Tomcat; this information is -provided without warranty :-). -The only supported means of building Tomcat is with the Ant build described above. -However, some developers like to work on Java code with a Java IDE, -and the following steps have been used by some developers. -

- -

-NOTE: This will not let you build everything under Eclipse; -the build process requires use of Ant for the many stages that aren't -simple Java compilations. -However, it will allow you to view and edit the Java code, -get warnings, reformat code, perform refactorings, run Tomcat -under the IDE, and so on. -

- -

-WARNING: Do not forget to create and configure - ${tomcat.source}/build.properties file as described above - before running any Ant targets. -

- -

-Sample Eclipse project files and launch targets are provided in the -res/ide-support/eclipse directory of the source tree. -The instructions below will automatically copy these into the required locations. -

-

-An Ant target is provided as a convenience to download all binary dependencies, and to create -the Eclipse project and classpath files in the root of the source tree. -

- -

-cd ${tomcat.source}
-ant ide-eclipse -

- -

-Start Eclipse and create a new Workspace. -

- -

-Open the Preferences dialog and then select Java->Build Path->Classpath -Variables to add two new Classpath Variables: -

- - - - - -
TOMCAT_LIBS_BASEThe same location as the base.path - setting in build.properties, where the binary dependencies have been downloaded
ANT_HOMEthe base path of Ant 1.9.8 or later
- - -

-Use File->Import and choose Existing Projects into Workspace. -From there choose the root directory of the Tomcat source tree (${tomcat.source}) -and import the Tomcat project located there. -

- -

-start-tomcat and stop-tomcat launch configurations are provided in -res/ide-support/eclipse and will be available in the Run->Run Configurations -dialog. Use these to start and stop Tomcat from Eclipse. -If you want to configure these yourself (or are using a different IDE) -then use org.apache.catalina.startup.Bootstrap as the main class, -start/stop etc. as program arguments, and specify -Dcatalina.home=... -(with the name of your build directory) as VM arguments. -

- -

-Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat -coding conventions (and have your contributions accepted): -

- - - - - - - - -
Java -> Code Style -> Formatter -> Edit...Tab policy: Spaces only
Tab and Indentation size: 4
General -> Editors -> Text EditorsDisplayed tab width: 2
Insert spaces for tabs
Show whitespace characters (optional)
XML -> XML Files -> EditorIndent using spaces
Indentation size: 2
Ant -> Editor -> FormatterTab size: 2
Use tab character instead of spaces: unchecked
- -

-The recommended configuration of Compiler Warnings is documented in -res/ide-support/eclipse/java-compiler-errors-warnings.txt file. -

- -

Building with other IDEs

-

-The same general approach should work for most IDEs; it has been reported -to work in IntelliJ IDEA, for example. -

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/ZipProject/wwwroot/zip/15509339270/balancer-howto.html b/ZipProject/wwwroot/zip/15509339270/balancer-howto.html deleted file mode 100644 index ebef81c..0000000 --- a/ZipProject/wwwroot/zip/15509339270/balancer-howto.html +++ /dev/null @@ -1,61 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Load Balancer HOW-TO

Load Balancer HOW-TO

Table of Contents

Using the JK 1.2.x native connector

- -Please refer to the JK 1.2.x documentation. - -

Using Apache HTTP Server 2.x with mod_proxy

- -Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either -HTTP or AJP load balancing. This new version of mod_proxy is also usable with -Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code -from Apache HTTP Server 2.2. - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git "a/ZipProject/wwwroot/zip/15509339460/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" "b/ZipProject/wwwroot/zip/15509339460/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" deleted file mode 100644 index 2235920..0000000 --- "a/ZipProject/wwwroot/zip/15509339460/1\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/building.html" +++ /dev/null @@ -1,278 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Building Tomcat

Building Tomcat

Table of Contents

Introduction

- -

-Building Apache Tomcat from source is very easy, and is the first step to -contributing to Tomcat. The complete and comprehensive instructions are -provided in the file BUILDING.txt. -The following is a quick step by step guide. -

- -

Download a Java Development Kit (JDK) version 8

- -

-Building Apache Tomcat requires a JDK (version 8) to be installed. You can download one from
-http://www.oracle.com/technetwork/java/javase/downloads/index.html
-http://openjdk.java.net/install/index.html
-or another JDK vendor. -

- -

-IMPORTANT: Set an environment variable JAVA_HOME to the pathname of the -directory into which you installed the JDK release. -

- -

Install Apache Ant 1.9.8 or later

- -

-Download a binary distribution of Ant 1.9.8 or later from -here. -

- -

-Unpack the binary distribution into a convenient location so that the -Ant release resides in its own directory (conventionally named -apache-ant-1.9.x). For the remainder of this guide, -the symbolic name ${ant.home} is used to refer to the full pathname of - the Ant installation directory. -

- -

-IMPORTANT: Create an ANT_HOME environment variable to point the directory ${ant.home}, -and modify the PATH environment variable to include directory -${ant.home}/bin in its list. This makes the ant command line script -available, which will be used to actually perform the build. -

- -

Checkout or obtain the Tomcat source code

- -

- Tomcat SVN repository URL: - https://svn.apache.org/repos/asf/tomcat/trunk/ -

-

- Tomcat source packages: - https://tomcat.apache.org/download-90.cgi. -

- -

- Checkout the source using SVN, selecting a tag for released version or - trunk for the current development code, or download and unpack a - source package. For the remainder of this guide, the symbolic name - ${tomcat.source} is used to refer to the - location where the source has been placed. -

- -

Configure download area

- -

- Building Tomcat involves downloading a number of libraries that it depends on. - It is strongly recommended to configure download area for those libraries. -

- -

- By default the build is configured to download the dependencies into the - ${user.home}/tomcat-build-libs directory. You can change this - (see below) but it must be an absolute path. -

- -

- The build is controlled by creating a - ${tomcat.source}/build.properties file. It can be used to - redefine any property that is present in build.properties.default - and build.xml files. The build.properties file - does not exist by default. You have to create it. -

- -

- The download area is defined by property base.path. For example: -

- -
# ----- Default Base Path for Dependent Packages -----
-# Replace this path with the directory path where
-# dependencies binaries should be downloaded.
-base.path=/home/me/some-place-to-download-to
- -

- Different versions of Tomcat are allowed to share the same download area. -

- -

- Another example: -

- -
base.path=${user.dir}/../libraries-tomcat9.0
- -

- Users who access the Internet through a proxy must use the properties - file to indicate to Ant the proxy configuration: -

- -
# ----- Proxy setup -----
-proxy.host=proxy.domain
-proxy.port=8080
-proxy.use=on
- -

Building Tomcat

- -

-Use the following commands to build Tomcat: -

- -

-cd ${tomcat.source}
-ant -

- -

-Once the build has completed successfully, a usable Tomcat installation will have been -produced in the ${tomcat.source}/output/build directory, and can be started -and stopped with the usual scripts. -

-

Building with Eclipse

- -

-IMPORTANT: This is not a supported means of building Tomcat; this information is -provided without warranty :-). -The only supported means of building Tomcat is with the Ant build described above. -However, some developers like to work on Java code with a Java IDE, -and the following steps have been used by some developers. -

- -

-NOTE: This will not let you build everything under Eclipse; -the build process requires use of Ant for the many stages that aren't -simple Java compilations. -However, it will allow you to view and edit the Java code, -get warnings, reformat code, perform refactorings, run Tomcat -under the IDE, and so on. -

- -

-WARNING: Do not forget to create and configure - ${tomcat.source}/build.properties file as described above - before running any Ant targets. -

- -

-Sample Eclipse project files and launch targets are provided in the -res/ide-support/eclipse directory of the source tree. -The instructions below will automatically copy these into the required locations. -

-

-An Ant target is provided as a convenience to download all binary dependencies, and to create -the Eclipse project and classpath files in the root of the source tree. -

- -

-cd ${tomcat.source}
-ant ide-eclipse -

- -

-Start Eclipse and create a new Workspace. -

- -

-Open the Preferences dialog and then select Java->Build Path->Classpath -Variables to add two new Classpath Variables: -

- - - - - -
TOMCAT_LIBS_BASEThe same location as the base.path - setting in build.properties, where the binary dependencies have been downloaded
ANT_HOMEthe base path of Ant 1.9.8 or later
- - -

-Use File->Import and choose Existing Projects into Workspace. -From there choose the root directory of the Tomcat source tree (${tomcat.source}) -and import the Tomcat project located there. -

- -

-start-tomcat and stop-tomcat launch configurations are provided in -res/ide-support/eclipse and will be available in the Run->Run Configurations -dialog. Use these to start and stop Tomcat from Eclipse. -If you want to configure these yourself (or are using a different IDE) -then use org.apache.catalina.startup.Bootstrap as the main class, -start/stop etc. as program arguments, and specify -Dcatalina.home=... -(with the name of your build directory) as VM arguments. -

- -

-Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat -coding conventions (and have your contributions accepted): -

- - - - - - - - -
Java -> Code Style -> Formatter -> Edit...Tab policy: Spaces only
Tab and Indentation size: 4
General -> Editors -> Text EditorsDisplayed tab width: 2
Insert spaces for tabs
Show whitespace characters (optional)
XML -> XML Files -> EditorIndent using spaces
Indentation size: 2
Ant -> Editor -> FormatterTab size: 2
Use tab character instead of spaces: unchecked
- -

-The recommended configuration of Compiler Warnings is documented in -res/ide-support/eclipse/java-compiler-errors-warnings.txt file. -

- -

Building with other IDEs

-

-The same general approach should work for most IDEs; it has been reported -to work in IntelliJ IDEA, for example. -

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git "a/ZipProject/wwwroot/zip/15509339460/2\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/balancer-howto.html" "b/ZipProject/wwwroot/zip/15509339460/2\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/balancer-howto.html" deleted file mode 100644 index ebef81c..0000000 --- "a/ZipProject/wwwroot/zip/15509339460/2\353\262\210\353\224\224\353\240\211\355\206\240\353\246\254/balancer-howto.html" +++ /dev/null @@ -1,61 +0,0 @@ - -Apache Tomcat 9 (9.0.11) - Load Balancer HOW-TO

Load Balancer HOW-TO

Table of Contents

Using the JK 1.2.x native connector

- -Please refer to the JK 1.2.x documentation. - -

Using Apache HTTP Server 2.x with mod_proxy

- -Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either -HTTP or AJP load balancing. This new version of mod_proxy is also usable with -Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code -from Apache HTTP Server 2.2. - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file -- 2.43.0